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.
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..
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.
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.
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:
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 ');
XMLRPClientWordPress
Classe in PHPOra 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.
Di Ciao
Richiesta XML-RPC per l'installazione di WordPressPer 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.
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
titolo
, soddisfare
, categorie
eccetera.pubblicare
cioè se pubblicare il postLa 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
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.
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.
Come le altre richieste discusse, WordPress supporta quasi tutte le operazioni più importanti che è possibile eseguire su WordPress.
Ci sono richieste supportate per
E molti altri sono supportati.
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!