XML-RPC in WordPress

XML-RPC è un protocollo per chiamate di procedure remote che utilizza XML per lo scambio di dati e utilizza principalmente HTTP per la chiamata effettiva. In XML-RPC il client che desidera effettuare una chiamata a un metodo remoto crea i parametri di input sotto forma di XML e lo invia tramite una richiesta HTTP a un server remoto che implementa il protocollo XML-RPC. Il server remoto che implementa il protocollo XML-RPC riceve la richiesta, quindi esegue il metodo remoto e restituisce il risultato in formato XML.

In questo articolo vedremo come chiamare i metodi sull'installazione di WordPress usando XML-RPC.


Passaggio 1 Informazioni su XML-RPC in WordPress

WordPress è una piattaforma di blogging completa. È reso altamente personalizzabile e aperto agli altri sistemi per connettersi e comunicare con esso. XML-RPC in WordPress aiuta questa apertura di WordPress consentendo ad altri sistemi o software di eseguire operazioni sull'installazione di WordPress, anche da remoto. Quindi, usando WordPress XML-RPC puoi creare client di blogging WordPress, altri software che eseguono alcune attività in batch come creare più post da un file, ecc..


Passaggio 2 Abilitazione del supporto XML-RPC nell'installazione di WordPress

Per impostazione predefinita, XML-RPC non è abilitato nell'installazione di WordPress. Quindi, affinché l'installazione di WordPress possa servire richieste XML-RPC, devi abilitare questa funzione sul tuo sito web.

Per abilitare questa funzione sarai nella sezione admin. Lì, in Impostazioni -> Scrittura dovrai abilitare l'opzione XML-RPC come mostrato sotto.


Passaggio 3 Conoscere i file e le classi in WordPress che rendono possibile XML-RPC

Tutte le richieste XML-RPC vengono inviate a xmlrpc.php file che è presente nella tua directory di installazione principale di WordPress. Il file fondamentalmente fa un bootstrap per caricare l'ambiente WordPress e quindi crea un oggetto della classe wp_xmlrpc_server che è presente nel luogo wp-includes / class-wp-XMLRPC-server.php.

Il wp_xmlrpc_server class è responsabile della gestione di tutte le richieste XML-RPC provenienti dai client XML-RPC.


Passaggio 4 Conoscere diversi tipi di API supportate dal server XML-RPC di WordPress

Il server WordPress XML-RPC supporta più tipi su API per XML-RPC. Di seguito sono riportati i tipi di API supportati dal server WordPress XML-RPC:

  • API WordPress
  • API di Blogger
  • API MetaWeblog
  • API MovableType
  • API PingBack

Sebbene non ci sia molta documentazione su tutto questo, una breve occhiata al wp_xmlrpc_server la classe aiuterà a conoscere il nome esatto delle API supportate dal server XML-RPC di WordPress.

 function wp_xmlrpc_server () $ this-> methods = array (// WordPress API 'wp.getUsersBlogs' => 'this: wp_getUsersBlogs', 'wp.getPage' => 'this: wp_getPage', 'wp.getPages' => 'this: wp_getPages', 'wp.newPage' => 'this: wp_newPage', 'wp.deletePage' => 'this: wp_deletePage', 'wp.editPage' => 'this: wp_editPage', 'wp.getPageList' => 'this: wp_getPageList', 'wp.getAuthors' => 'this: wp_getAuthors', 'wp.getCategories' => 'this: mw_getCategories', // Alias ​​'wp.getTags' => 'this: wp_getTags', 'wp.newCategory' => 'this: wp_newCategory', 'wp.deleteCategory' => 'this: wp_deleteCategory', 'wp.suggestCategories' => 'this: wp_suggestCategories', 'wp.uploadFile' => 'this: mw_newMediaObject ', // Alias' wp.getCommentCount '=>' this: wp_getCommentCount ',' wp.getPostStatusList '=>' this: wp_getPostStatusList ',' wp.getPageStatusList '=>' this: wp_getPageStatusList ',' wp.getPageTemplates '= > 'this: wp_getPageTemplates', 'wp.getOptions' => 'this: wp_getOptions', 'wp.setOptions' => 'this: wp_setOptions', 'wp.getComment' => 'questo: wp_getComment ',' wp.getComments '=>' this: wp_getComments ',' wp.deleteComment '=>' this: wp_deleteComment ',' wp.editComment '=>' this: wp_editComment ',' wp.newComment '=>' this: wp_newComment ',' wp.getCommentStatusList '=>' this: wp_getCommentStatusList ',' wp.getMediaItem '=>' this: wp_getMediaItem ',' wp.getMediaLibrary '=>' this: wp_getMediaLibrary ',' wp.getPostFormats '= > 'this: wp_getPostFormats', // Blogger API 'blogger.getUsersBlogs' => 'this: blogger_getUsersBlogs', 'blogger.getUserInfo' => 'this: blogger_getUserInfo', 'blogger.getPost' => 'this: blogger_getPost', 'blogger.getRecentPosts' => 'this: blogger_getRecentPosts', 'blogger.getTemplate' => 'this: blogger_getTemplate', 'blogger.setTemplate' => 'this: blogger_setTemplate', 'blogger.newPost' => 'questo: blogger_newPost ',' blogger.editPost '=>' this: blogger_editPost ',' blogger.deletePost '=>' this: blogger_deletePost ', // MetaWeblog API (con estensioni MT alle structs)' metaWeblog.newPost '=>' this: mw_newPost ',' metaWeblog.editPost '=>' questo: mw _editPost ',' metaWeblog.getPost '=>' this: mw_getPost ',' metaWeblog.getRecentPosts '=>' this: mw_getRecentPosts ',' metaWeblog.getCategories '=>' this: mw_getCategories ',' metaWeblog.newMediaObject '=>' this: mw_newMediaObject ', // Alias ​​API MetaWeblog per l'API di Blogger // vedi http://www.xmlrpc.com/stories/storyReader$2460' metaWeblog.deletePost '=>' this: blogger_deletePost ',' metaWeblog.getTemplate '=> 'this: blogger_getTemplate', 'metaWeblog.setTemplate' => 'this: blogger_setTemplate', 'metaWeblog.getUsersBlogs' => 'this: blogger_getUsersBlogs', // API MovableType 'mt.getCategoryList' => 'this: mt_getCategoryList', ' mt.getRecentPostTitles '=>' this: mt_getRecentPostTitles ',' mt.getPostCategories '=>' this: mt_getPostCategories ',' mt.setPostCategories '=>' this: mt_setPostCategories ',' mt.supportedMethods '=>' this: mt_supportedMethods ' , 'mt.supportedTextFilters' => 'this: mt_supportedTextFilters', 'mt.getTrackbackPings' => 'this: mt_getTrackbackPings', 'mt.publishPost' => 'this: mt_publishPost', // PingBack 'pingback.ping' => 'this: pingback_ping', 'pingback.extensions.getPingbacks' => 'this: pingback_extensions_getPingbacks', 'demo.sayHello' => 'this: sayHello', 'demo.addTwoNumbers' => ' questo: addTwoNumbers ');

Passaggio 5 Creazione di XMLRPClientWordPress Classe in PHP

Ora stiamo per creare una classe XMLRPClientWordPress in PHP che fornirà le funzioni per eseguire diverse operazioni sull'installazione di WordPress tramite chiamate XML-RPC.

 class XMLRPClientWordPress var $ XMLRPCURL = ""; var $ UserName = ""; var $ PassWord = "";

Per prima cosa creeremo una classe e ci saranno tre membri per contenere il valore dell'URL XML-RPC dell'installazione di WordPress e il nome utente e la password dell'installazione.

L'URL XML-PRC è http://yourwordpressinstall.com/xmlrpc.php, e il nome utente e la password sono il nome utente e la password di un utente del blog con accesso appropriato.

Quindi creeremo un costruttore per prendere questi valori e memorizzarli nei membri della classe come segue.

 // Funzione pubblica Costruttore __construct ($ xmlrpcurl, $ username, $ password) $ this-> XMLRPCURL = $ xmlrpcurl; $ this-> UserName = $ username; $ this-> PassWord = $ password; 

Quindi creeremo un invia richiesta funzione che prenderà come nome il nome della richiesta e i parametri per la richiesta. La funzione creerà quindi una richiesta XML dai parametri di input e quindi invierà la richiesta all'URL XML-RPC dell'installazione di WordPress e restituirà i risultati.

La funzione è la seguente:

 funzione send_request ($ requestname, $ params) $ request = xmlrpc_encode_request ($ requestname, $ params); $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ richiesta); curl_setopt ($ ch, CURLOPT_URL, $ this-> XMLRPCURL); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_TIMEOUT, 1); $ results = curl_exec ($ ch); curl_close ($ ch); restituire $ risultati; 

Questa funzione utilizza la funzione PHP xmlrpc_encode_request che crea la richiesta XML quindi usiamo curl per inviare la richiesta sull'URL XML-RPC dell'installazione di WordPress memorizzata nella variabile membro della classe.

Quindi questa funzione restituisce il risultato che ottiene dal server XML-RPC.


Passaggio 6 Invio del primo Di Ciao Richiesta XML-RPC per l'installazione di WordPress

Per verificare se siamo in grado di chiamare correttamente i metodi sul server di installazione di WordPress chiameremo demo.sayHello metodo, non richiede parametri e, se eseguito correttamente, il server XML-RPC WordPress restituisce una stringa "Ciao!".

La funzione da chiamare demo.sayHello è come segue:

 function sayHello () $ params = array (); restituire $ this-> send_request ('demo.sayHello', $ params); 

Fondamentalmente come il demo.sayHello il metodo non accetta alcun parametro, inviamo un array vuoto come parametro e quindi chiamiamo invia richiesta passando il nome della richiesta come demo.sayHello.

Per chiamare questa funzione è necessario creare un oggetto di classe XMLRPClientWordPress come segue:

 $ objXMLRPClientWordPress = nuovo XMLRPClientWordPress ("http: //localhost/wordpress31/xmlrpc.php", "admin", "abbas");

E poi chiama:

 $ ObjXMLRPClientWordPress-> sayHello ()

L'output di questo sarà il seguente:

Se ottieni lo stesso risultato significa che puoi inviare correttamente la richiesta al tuo server XML-RPC WordPress e ricevere la richiesta correttamente.

Ora puoi eseguire un'operazione un po 'più complessa usando XML-RPC nella tua installazione di WordPress.


Passaggio 7 Creazione di un post sul blog utilizzando XML-RPC

Ora creiamo una funzione che creerà un post sul blog tramite XML-RPC.

Il nome della richiesta per creare un post è metaWeblog.newPost che è in realtà una parte dell'API MetaWeblog supportata da WordPress.

Gli argomenti richiesti per questa richiesta sono i

  • blogid (che è 0 se hai un solo blog sulla tua installazione)
  • nome utente
  • parola d'ordine
  • Struttura del contenuto del post, ad esempio informazioni differenti sul post titolo, soddisfare, categorie eccetera.
  • pubblicare cioè se pubblicare il post

La funzione create_post è come segue:

 function create_post ($ title, $ body, $ category, $ keywords = ", $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ keywords = htmlentities ($ keywords, ENT_NOQUOTES , $ encoding); $ content = array ('title' => $ title, 'description' => $ body, 'mt_allow_comments' => 0, // 1 per consentire commenti 'mt_allow_pings' => 0, // 1 a consentire trackback 'post_type' => 'post', 'mt_keywords' => $ keywords, 'categorie' => array ($ categoria)); $ params = array (0, $ this-> UserName, $ this-> PassWord, $ content, true); restituire $ this-> send_request ('metaWeblog.newPost', $ params);

Questa funzione prende titolo, corpo, categorie ecc. Come argomenti di input. Quindi crea una struttura di contenuto da questi argomenti e imposta alcuni valori predefiniti.

Quindi creeremo un array di parametri dal nome utente, dalla password precedentemente passati nel costruttore e dall'array di contenuti che abbiamo creato dai parametri di input.

Questa funzione può essere chiamata come segue.

 $ objXMLRPClientWordPress-> create_post ('Hello WordPress XML-RPC', 'Questo è il contenuto del post fatto tramite XML-RPC', ");

L'ID post del post appena creato è il valore restituito da questa API. Se creiamo una tabella dall'API e stampiamo i suoi risultati, apparirà come segue.

Se andiamo a vedere l'installazione di WordPress, il post verrà visualizzato come segue


Passaggio 8 Creazione di una pagina del blog Utilizzo di XML-RPC

Ora creeremo una pagina sull'installazione di WordPress usando XML-RPC. La richiesta per creare una pagina è wp.newPage che è in realtà una parte dell'API di WordPress.

Gli argomenti per questo sono identici a quelli per la creazione di richiesta post.

Di seguito è il crea pagina funzione:

 function create_page ($ title, $ body, $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ content = array ('title' => $ title, 'description' => $ body); $ params = array (0, $ this-> UserName, $ this-> PassWord, $ content, true); restituire $ this-> send_request ('wp.newPage', $ params); 

Questo prende fondamentalmente il titolo e il corpo come input e quindi crea i parametri richiesti per la richiesta, quindi invia la richiesta.

Chiameremo la funzione come segue

 $ objXMLRPClientWordPress-> create_page ('Pagina WordPress XML-RPC', 'Questo è il contenuto di First Page fatta tramite XML-RPC');

E poi chiama:

 $ ObjXMLRPClientWordPress-> sayHello ()

Il ritorno per questa richiesta è l'id della pagina appena creata. Ora se eseguiamo questa funzione e controlliamo la nostra installazione di WordPress, la pagina appena creata sarà vista come segue.


Passaggio 9 Ottenere l'elenco degli autori di un blog utilizzando XML-RPC

Ora creeremo una funzione per ottenere l'elenco degli autori dall'installazione di WordPress tramite XML-RPC. La richiesta per ottenere l'elenco degli autori è wp.getAuthors che è anche una parte dell'API di WordPress.

I parametri per questa richiesta sono i seguenti:

  • blogid (che è 0 se hai un solo blog sulla tua installazione)
  • nome utente
  • parola d'ordine

La funzione display_authors è come segue:

 function display_authors () $ params = array (0, $ this-> UserName, $ this-> PassWord); restituire $ this-> send_request ('wp.getAuthors', $ params); 

Non prende alcun parametro utilizza solo il nome utente e la password memorizzati per inviare la richiesta. L'output di questa funzione è una stringa sui dettagli dell'autore di tutti gli autori sul blog.

Possiamo chiamare questa funzione come segue:

 $ ObjXMLRPClientWordPress-> display_authors ();

Di seguito è riportata la tabella creata dalla richiesta e dalla risposta delle diverse richieste in questo tutorial.


Passaggio 10 Informazioni su alcune altre operazioni importanti Supportate da WordPress XML-RPC

Come le altre richieste discusse, WordPress supporta quasi tutte le operazioni più importanti che è possibile eseguire su WordPress.

Ci sono richieste supportate per

  • Creazione, modifica, eliminazione di pagine e post
  • Creazione, modifica, eliminazione di commenti
  • Elenco degli autori e dei dettagli del blog
  • Per ottenere i post recenti e l'elenco delle categorie

E molti altri sono supportati.


Conclusione

Il supporto XML-RPC su WordPress consente di scrivere altri software o script che possono automatizzare le attività sull'installazione di WordPress o altri software client per eseguire attività in remoto.

Funzionalità come XML-RPC aiutano WordPress ad essere una piattaforma molto aperta ed estensibile. Così felice blogging con WordPress!

Hai un compito particolare a cui ti piace usare XML-RPC? Esiste un software specifico che ti piace utilizzare con WordPress che utilizza XML-RPC? Fateci sapere nei commenti qui sotto!