TL; DR
Non esiste un'API JavaScript nel core di WordPress e nessuno è pianificato, ma in realtà non ce n'è bisogno.
backend
Innanzitutto diciamo che, per quanto riguarda il backend, alcune informazioni utili possono essere recuperate da variabili globali JavaScript già presenti (WordPress adora tutti i gusti globali).
Per esempio
ajaxurl
per l' admin-ajax.php
URL da utilizzare nelle chiamate Ajax
pagenow
per l'attuale slug della pagina di amministrazione, ad esempio "dashboard"
adminpage
per il file della pagina di amministrazione corrente, ad es. 'index-php' (i punti vengono sostituiti con hiphens)
typenow
per il tipo di post corrente in edit.php
, post.php
opost-new.php
userSettings
può essere utilizzato per ottenere informazioni sull'utente attualmente registrato
Tali informazioni forniscono un "contesto" dello stato dell'applicazione mentre ci si trova nel back-end.
Per le altre cose menzionate nella domanda, non è necessaria alcuna "API", poiché le funzioni jQuery semplicissime possono fare il trucco. Ad esempio, per sapere se il menu di amministrazione è chiuso, è possibile verificare la classe "piegata" nel corpo:
if ( $(body).hasClass('folded') ) {
alert( 'Admin left menu is closed!' );
} else {
alert( 'Admin left menu is open!' );
}
Mancanza di documentazione
Per cose come i frammenti precedenti non vale la pena creare funzioni. WP ha già troppe funzioni in PHP. Spero davvero che funzioni aggiuntive come quelle non vengano aggiunte al core.
Ciò di cui JavaScript ha davvero bisogno in WordPress è una maggiore documentazione per le funzionalità esistenti: nessuna delle cose che ho scritto sopra è documentata in documenti ufficiali come il Codex o nei file sorgente.
Fine frontale?
Fino a qui ho parlato solo del backend.
Questo perché praticamente tutte le cose che accadono sul frontend sono correlate al tema attualmente in uso. Immaginiamo che ci sia un file JavaScript fornito da WordPress contenente funzioni per ottenere informazioni sullo stato corrente dell'applicazione; se un tema non accoda quel file JS, quelle funzioni non sono disponibili e forzare un tema ad accodare un tale script sarebbe assolutamente sbagliato.
Non c'è bisogno di (un'altra) API
Tuttavia, in WordPress, tutte le informazioni che puoi ottenere tramite PHP possono essere facilmente utilizzate anche in JavaScript e senza alcuna richiesta AJAX. Quella funzione che lo rende possibile è wp_localize_script()
.
Supponiamo che tu voglia ottenere l'utente corrente e i dati dell'utente come il suo ruolo utente nel tuo JavaScript e vuoi anche conoscere le variabili di query utilizzate nella pagina corrente, puoi fare quanto segue:
$data = array(
'user' => wp_get_current_user(),
'query_vars' => $GLOBALS['wp']->query_vars
);
wp_localize_script( 'myscript', 'MyScriptData', $data );
Facendo così nel tuo script, la MyScriptData.user
variabile sarà un oggetto JavaScript con tutte le informazioni degli utenti tutte le variabili della query.
Questo è valido per gli script backend e frontend (in altre parole: per entrambi i "lati"). Non è necessaria alcuna API JavaScript aggiuntiva solo per recuperare tali informazioni. PHP è sufficiente se si utilizzano i modi corretti per passare informazioni da PHP a JS.
Backbone.js
Backbone.js , è un framework JavaScript che consente un (tipo di) modello di sviluppo MVC con JavaScript. È stato incluso nel core con WP 3.5, principalmente per gestire la galleria multimediale.
Questa libreria non è un'API JavaScript di WordPress, perché sicuramente consente uno sviluppo JavaScript più potente, ma non una singola funzione specifica di WordPress è stata aggiunta a quella libreria ed è l'unico utilizzo corrente di Backbone.js. La libreria multimediale è più o meno priva di documenti e non ha API pubbliche. E AFAIK non prevede di colmare questa lacuna. (Più che felice di cambiare / rimuovere quella dichiarazione - se qualcuno può dimostrarmi che mi sbaglio).
WP-API
Come sottolineato da Rarst e Brian Fegter , l'API WP farà parte del core (probabilmente a partire da WP 4.1).
Ma devo dire che si tratta non di un'API JavaScript. Permette solo di connettere una richiesta HTTP a un endpoint dell'applicazione che è controllato dall'API WP. E l'API recupera i dati dal database e li restituisce JSON formattato lì. Esempio dai documenti:
Vuoi ricevere i post del tuo sito? Basta inviare una GET
richiesta a /wp-json/posts
. Aggiorna utente con ID 4
? Invia una POST
richiesta a /wp-json/users/4
. Ricevi tutti i post con il termine di ricerca "fantastico"? GET /wp-json/posts?filter[s]=awesome
.
Poiché le richieste HTTP e le relative risposte JSON possono essere gestite con qualsiasi linguaggio che supporti le richieste HTTP e il formato dei dati JSON (tra cui PHP, Ruby, Python, ASP, ecc.), L' obiettivo principale dell'API WP è quello di consentire di ottenere e impostare dati WordPress da applicazioni non WP. Ciò significa che all'interno di qualsiasi applicazione , non solo WordPress.
Certo, poiché JavaScript è un linguaggio in grado di gestire sia le richieste HTTP sia il formato JSON, è possibile utilizzare l'API WP anche da WordPress JavaScript. Qualcuno sta anche lavorando su un client WP js per quell'API, ma
utilizzando wp_enqueue_script()
+ l'API Ajax + le funzioni PHP di WordPress è possibile recuperare tutte le informazioni necessarie senza alcuna API aggiuntiva. E poiché tutti e tre gli "ingredienti" sono standard stabiliti dal WP, usarli non è una "soluzione propria". Fa solo uso di soluzioni standard per eseguire attività personalizzate (e comuni), che è lo scopo di questo sviluppo di plugin.
è anche possibile utilizzare JavaScript per utilizzare l'API WP. Solo perché l'API WP restituisce JSON, non lo rende un'API JavaScript. Non è coinvolta alcuna funzione JavaScript (viene inviata una richiesta HTTP e viene restituito un repository JSON. Praticamente lo stesso di ciò che accade utilizzando l'API AJAX). In caso contrario, qualsiasi servizio che restituisce JSON dovrebbe essere considerato un'API JS di WordPress. L'API WP deve essere considerata un'API di servizio esterna che restituisce JSON e può accadere che il sito che utilizza questo servizio JSON sia lo stesso che lo fornisce.
non c'è una sola cosa che può essere fatta con l'API WP che non può essere fatta anche usando l'API AJAX. Ma ci sono molte cose che possono essere fatte con l'API AJAX. ma non con l'API WP.
Una nota su WP-API + Backbone.js
Con Backbone.js è possibile ottenere e salvare informazioni in applicazioni che supportano richieste HTTP RESTful .
Il problema è che WordPress, sia nelle richieste "regolari" che in quelle AJAX, è quasi RESTful: supporta solo $_GET
e $_POST
richieste per impostazione predefinita, e l'utilizzo dell'uno o dell'altro con lo stesso URl finisce in ... lo stesso risultato .
Al contrario, l'API WP è RESTful, quindi le applicazioni basate su Backbone possono trarne vantaggio per potenti applicazioni JavaScript, ma starei lontano dalla definizione di Backbone o WP API o Backbone + WP API come API JavaScript per WordPress per le cose dette sopra.