TL; DR
No hay una API de JavaScript en el núcleo de WordPress y nadie está planeado, pero en realidad, no es necesario.
Backend
En primer lugar, digamos que, con respecto al backend, se puede obtener información útil de las variables globales de JavaScript ya presentes (WordPress ama todos los sabores globales).
P.ej
ajaxurl
para que la admin-ajax.php
url se use en llamadas ajax
pagenow
para el slug de la página de administración actual, por ejemplo, 'tablero'
adminpage
para el archivo de la página de administración actual, por ejemplo, 'index-php' (los puntos se reemplazan con guiones)
typenow
para el tipo de publicación actual mientras está en edit.php
, post.php
opost-new.php
userSettings
se puede utilizar para obtener información sobre el usuario registrado actual
Esa información le brinda un "contexto" del estado de la aplicación mientras está en el back-end.
Para otras cosas mencionadas en la pregunta, no necesita ninguna "API", porque las funciones súper simples de jQuery pueden hacer el truco. Por ejemplo, para saber si el menú de administración está cerrado, puede verificar la clase "doblada" en el cuerpo:
if ( $(body).hasClass('folded') ) {
alert( 'Admin left menu is closed!' );
} else {
alert( 'Admin left menu is open!' );
}
Falta de documentación
Para cosas como los fragmentos anteriores, no vale la pena crear funciones. WP ya tiene demasiadas funciones en PHP. Realmente espero que funciones adicionales como esas no se agreguen al núcleo.
Lo que realmente necesita JavaScript en WordPress es más documentación para las funciones existentes: ninguna de las cosas que he escrito anteriormente está documentada en ningún documento oficial como el Codex o en los archivos fuente.
¿Interfaz?
Hasta aquí solo he hablado del backend.
Esto se debe a que casi todas las cosas que suceden en la interfaz están relacionadas con el tema actualmente en uso. Imaginemos que hay un archivo JavaScript proporcionado por WordPress que contiene funciones para obtener información sobre el estado actual de la aplicación; si un tema no pone en cola ese archivo JS, esas funciones no están disponibles y forzar a un tema a poner en cola tal script sería absolutamente incorrecto.
Sin necesidad de (otra) API
Sin embargo, en WordPress, toda la información que puede obtener a través de PHP también se puede usar fácilmente en JavaScript y sin ninguna solicitud de AJAX. Esa función que hace esto posible es wp_localize_script()
.
Supongamos que desea obtener los datos actuales del usuario y del usuario, como su rol de usuario en su JavaScript, y también desea conocer las variables de consulta utilizadas en la página actual, puede hacer lo siguiente:
$data = array(
'user' => wp_get_current_user(),
'query_vars' => $GLOBALS['wp']->query_vars
);
wp_localize_script( 'myscript', 'MyScriptData', $data );
Al hacerlo en su script, la MyScriptData.user
variable será un objeto JavaScript con toda la información de los usuarios y todas las variables de consulta.
Esto es válido para los scripts de backend y frontend (en otras palabras: para ambos "lados"). No hay necesidad de ninguna API JavaScript adicional solo para obtener esa información. PHP es suficiente si utiliza las formas adecuadas para pasar información de PHP a JS.
Backbone.js
Backbone.js , es un marco de JavaScript que permite un (más o menos) patrón de desarrollo MVC con JavaScript. Se incluyó en el núcleo con WP 3.5, principalmente para manejar la galería de medios.
Esta biblioteca no es una API de JavaScript de WordPress, porque seguramente permite un desarrollo de JavaScript más potente, pero no se ha agregado ninguna función específica de WordPress a esa biblioteca y es el único uso central actual de Backbone.js. La biblioteca de medios está más o menos indocumentada y no tiene API pública. Y AFAIK no está planeado para llenar ese vacío. (Más que feliz de cambiar / eliminar esa declaración, si alguien puede demostrar que estoy equivocado).
WP-API
Como señalaron Rarst y Brian Fegter , la API de WP será parte del núcleo (probablemente comenzando con WP 4.1).
Pero tengo que decir que es no una API de JavaScript. Simplemente permite conectar una solicitud HTTP a un punto final de la aplicación que es controlada por la WP-API. Y la API obtiene datos de la base de datos y los devuelve JSON formateados allí. Ejemplo de los documentos:
¿Quieres obtener las publicaciones de tu sitio? Simplemente envíe una GET
solicitud a /wp-json/posts
. ¿Actualizar usuario con ID 4
? Enviar una POST
solicitud a /wp-json/users/4
. Obtener todas las publicaciones con el término de búsqueda "impresionante"? GET /wp-json/posts?filter[s]=awesome
.
Como las solicitudes HTTP y las respuestas JSON relacionadas se pueden manejar con cualquier lenguaje que admita solicitudes HTTP y formato de datos JSON (entre ellos PHP, Ruby, Python, ASP, etc.), el objetivo principal de la API de WP es permitir obtener y establecer datos de WordPress de aplicaciones no WP. Eso significa desde cualquier aplicación , no solo WordPress.
Claro, dado que JavaScript es un lenguaje que puede manejar tanto las solicitudes HTTP como el formato JSON, también puede usar la API de WP desde JavaScript de WordPress. Alguien también está trabajando en un cliente WP js para esa API, pero
usando wp_enqueue_script()
+ las funciones Ajax API + WordPress PHP es posible recuperar toda la información que necesita sin ninguna API adicional. Y dado que los tres "ingredientes" son estándares establecidos por WP, usarlos no es una "solución propia". Simplemente utiliza soluciones estándar para realizar tareas personalizadas (y comunes), que es de lo que se trata este desarrollo de complementos.
Incluso es posible utilizar JavaScript para utilizar la API de WP. Solo porque WP-API devuelve JSON, no lo convierte en una API de JavaScript. No hay ninguna función de JavaScript involucrada (se envía una solicitud HTTP y se devuelve un repositorio JSON. Más o menos lo mismo que sucede al usar la API AJAX). De lo contrario, cualquier servicio que devuelva JSON debe considerarse una API JS de WordPress. La WP-API debe considerarse una API de servicio externo que devuelve JSON, y puede darse el caso de que el sitio que consume este servicio JSON sea el mismo que lo proporciona.
No hay una sola cosa que se pueda hacer con la API de WP que no se pueda hacer también usando la API de AJAX. Pero hay muchas cosas que se pueden hacer con la API AJAX. pero no con la WP-API.
Una nota sobre WP-API + Backbone.js
Con Backbone.js, es posible obtener y guardar información en aplicaciones que admiten solicitudes HTTP RESTful .
El problema es que WordPress, tanto en solicitudes "regulares" como en AJAX, es RESTful: solo admite $_GET
y $_POST
solicita por defecto, y usar uno u otro con la misma URL termina en ... el mismo resultado .
Por el contrario, la API de WP es RESTful, por lo que las aplicaciones basadas en Backbone pueden aprovecharla para poderosas aplicaciones de JavaScript, pero me mantendría alejado de definir Backbone o WP API o Backbone + WP API como una API de JavaScript para WordPress por cosas que dicen encima.