XML-RPC în WordPress

XML-RPC este un protocol pentru apelurile procedurale la distanță care utilizează XML pentru schimbul de date și utilizează în cea mai mare parte HTTP pentru apelul real. În XML-RPC, clientul care dorește să facă apel la o metodă la distanță creează parametrii de intrare sub formă de XML și îl trimite printr-o cerere HTTP către un server la distanță care implementează protocolul XML-RPC. Serverul de la distanță care implementează protocolul XML-RPC primește cererea și apoi execută metoda de la distanță și returnează rezultatul în format XML.

În acest articol vom vedea cum să apelați metode pe instalarea WordPress folosind XML-RPC.


Pasul 1 Înțelegerea XML-RPC în WordPress

WordPress este o platformă completă de bloguri. Se face extrem de personalizabil și deschis pentru alte sisteme să se conecteze și să comunice cu acesta. XML-RPC în WordPress ajută la această deschidere a programului WordPress, permițând altor sisteme sau software să efectueze operațiuni de instalare WordPress chiar și de la distanță. Deci, folosind WordPress XML-RPC puteți crea clienți WordPress de blogging, un alt software care face unele sarcini batch cum ar fi crearea de mesaje multiple dintr-un fișier, etc.


Pasul 2 Activarea suportului XML-RPC pe tine WordPress Instalare

Implicit XML-RPC nu este activat în instalarea WordPress. Deci, pentru ca instalarea WordPress să poată servi cereri XML-RPC, trebuie să activați această caracteristică pe site-ul dvs. Web.

Pentru a activa această funcție, veți merge la secțiunea de administrare. Acolo, în secțiunea Setări -> Scriere, va trebui să activați opțiunea XML-RPC după cum se arată mai jos.


Pasul 3 Cunoașterea fișierelor și a claselor în WordPress care fac ca RPC-ul XML să fie posibil

Toate cererile XML-RPC sunt trimise către xmlrpc.php fișier care este prezent în directorul principal de instalare WordPress. Fișierul face practic o bootstrap pentru încărcarea mediului WordPress și apoi creează un obiect al clasei wp_xmlrpc_server care este prezent la locație wp-include / clasa-wp-XMLRPC-server.php.

wp_xmlrpc_server clasa este responsabilă pentru gestionarea tuturor cererilor XML-RPC provenind de la clienții XML-RPC.


Pasul 4 Cunoașterea diferitelor tipuri de API-uri suportate de WordPress XML-RPC Server

Serverul WordPress XML-RPC acceptă mai multe tipuri de API-uri pentru XML-RPC. Următoarele tipuri de API-uri pe care le suportă serverul WordPress XML-RPC:

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

Deși nu există prea multe documente despre toate acestea, o scurtă privire la wp_xmlrpc_server clasa va ajuta să cunoașteți numele exact al API-urilor acceptate de serverul WordPress "XML-RPC.

 "wp_getPages", "wp.getPages" => 'this: wp_getPage', 'wp.getPages' => wp_xmlrpc_server () $ this-> methods = array (// WordPress API 'wp.getUsersBlogs' 'wp_getPages', 'wp.newPage' => 'this: wp_newpage', 'wp.deletePage' => 'this: wp_deletePage', 'wp.editPage' => 'aceasta: wp_getPageList', 'wp.getAuthors' => 'this: wp_getAuthors', 'wp.getCategories' => 'this: mw_getCategories', // wp.getTags ' 'wp.newCategory' => 'this: wp_newCategory', 'wp.deleteCategory' => 'this: wp_deleteCategory', 'wp.suggestCategories' => 'this: mw_newMediaObject ', // wp.getPageStatusList', 'wp.getPageStatusList', 'wp.getPageStatusList' => 'this: wp.getPageStatusList', 'wp.getPageStatusList' => > 'wp_getPageTemplates', 'wp.getOptions' => 'this: wp_getOptions', 'wp.setOptions' => 'this: wp_setOptions', ' wp_getComment ',' wp.getComment '=>' this: wp_getitComment ',' wp.newComment '=>' wp_getComment ',' acest lucru: wp_newComment ',' wp.getCommentStatusList '=>' this: wp_getCommentStatusList ',' wp.getMediaItem '=>' this: wp_getMediaItem ',' wp.getMediaLibrary '=> > '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' => ',' blogger.editPost '=>' this: blogger_editPost ',' blogger.deletePost '=>' this: blogger_deletePost ', // MetaWeblog API (cu extensii MT pentru structuri)' metaWeblog.newPost '=>' this: mw_newPost ',' metaWeblog.editPost '=>' aceasta: mw 'metaWeblog.getPost' => 'this: mw_getCategory', 'metaWeblog.newMediaObject' => 'this: mw_getPost', 'metaWeblog.getRecentPosts' => 'this: mw_getRecentPosts' acest lucru: mw_newMediaObject ', // Aliasuri API MetaWeblog API pentru Blogger API // a se vedea 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', // MovableType API 'mt.getCategoryList' => 'this: mt_getCategoryList' mt.getRecentPostTitles '=>' this: mt_setPostCategories '=>' this: mt_getPostCategories '=>' this: mt_getPostCategories ' , 'mt.supportedTextFilters' => 'aceasta: mt_supportedTextFilters', 'mt.getTrackbackPings' => 'this: mt_getTrackbackPings', 'mt.publishPost' => 'this: mt_publishPost', // PingBack 'pingback.ping' => 'aceasta: pingback_ping', 'pingback.extensions.getPingbacks' => 'this: pingback_extensions_getPingbacks', 'demo.sayHello' => 'this: sayHello', 'demo.addTwoNumbers' acest lucru: addTwoNumbers ');

Pasul 5 Crearea XMLRPClientWordPress Clasă în PHP

Acum vom crea o clasă XMLRPClientWordPress în PHP, care va oferi funcții pentru a efectua diferite operațiuni pe instalarea WordPress prin apeluri XML-RPC.

 clasa XMLRPClientWordPress var $ XMLRPCURL = ""; var $ Nume utilizator = ""; var $ PassWord = "";

Mai întâi vom crea o clasă și vom avea trei membri în ea pentru a păstra valoarea adresei XML-RPC a instalării WordPress și a numelui și a parolei de instalare.

Adresa XML-PRC este http://yourwordpressinstall.com/xmlrpc.php, iar numele de utilizator și parola sunt numele de utilizator și parola unui utilizator al blogului cu acces adecvat.

Apoi vom crea un constructor care să ia aceste valori și să le stocheze în membrii clasei după cum urmează.

 // Funcția publică constructor __construct ($ xmlrpcurl, $ username, $ password) $ this-> XMLRPCURL = $ xmlrpcurl; $ this-> UserName = $ username; $ this-> PassWord = $ parola; 

Apoi vom crea o Trimite cerere funcție care va prelua numele de solicitare și parametrii cererii ca intrare. Funcția va crea apoi o cerere XML de la parametrii de intrare și apoi va trimite cererea către URL-ul de instalare WordPress XML-RPC și va returna rezultatele.

Funcția este după cum urmează:

 funcția send_request ($ requestname, $ params) $ request = xmlrpc_encode_request ($ requestname, $ params); $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ cerere); curl_setopt ($ ch, CURLOPT_URL, $ this-> XMLRPCURL); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_TIMEOUT, 1); $ rezultate = curl_exec ($ ch); curl_close ($ ch); returneaza rezultatele $; 

Această funcție utilizează funcția PHP xmlrpc_encode_request care creează cererea XML apoi folosim curl pentru a trimite cererea pe URL-ul RPC XML al instalării WordPress stocată în variabila membru de clasă.

Apoi, această funcție returnează rezultatul obținut de la serverul XML-RPC.


Pasul 6 Trimiterea primului Spune buna Cerere XML-RPC la instalarea WordPress

Pentru a verifica dacă suntem capabili să apelam corect metodele de pe serverul de instalare WordPress, vom apela demo.sayHello , nu este nevoie de nici un parametru și care, dacă rulează corect, serverul WordPress XML-RPC returnează un șir "Hello!".

Funcția de apelare demo.sayHello este după cum urmează:

 funcția sayHello () $ params = array (); returnați $ this-> send_request ('demo.sayHello', $ params); 

Practic ca demo.sayHello metoda nu ia nici un parametru trimitem o matrice goală ca parametru și apoi sunăm Trimite cerere prin trecerea numelui cererii ca demo.sayHello.

Pentru a apela această funcție, va trebui să creați un obiect de clasă XMLRPClientWordPress după cum urmează:

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

Apoi sunați:

 $ ObjXMLRPClientWordPress-> sayHello ()

Rezultatul va fi următorul:

Dacă obțineți același rezultat, înseamnă că puteți trimite cererea în mod corespunzător către serverul dvs. WordPress XML-RPC și primiți cererea corect.

Acum puteți efectua o operație puțin mai complexă folosind XML-RPC pe instalarea WordPress.


Pasul 7 Crearea unui blog post utilizând XML-RPC

Acum, să creăm o funcție care va crea o postare pe blog prin XML-RPC.

Numele cererii pentru crearea unei postări este metaWeblog.newPost care este de fapt o parte din API-ul MetaWeblog pe care WordPress îl susține.

Argumentele necesare pentru această solicitare sunt

  • blogid (care este 0 dacă aveți doar un blog pe instalarea dvs.)
  • nume de utilizator
  • parola
  • Structura de conținut a postării, adică informații diferite despre postare titlu, conţinut, categorii etc.
  • publica adică dacă să publicăm postarea

Functia create_post este după cum urmează:

 funcția create_post ($ title, $ body, $ category, $ keywords = ", $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); , $ content = array ('title' => $ title, 'description' => $ body, 'mt_allow_comments' => 0, // 1 pentru a permite comentariilor 'mt_allow_pings' => 0, // 1 to permite parcurgerea urmatoarelor optiuni: post_type '=>' post ',' mt_keywords '=> $ keywords,' categories '=> array ($ category)) $ params = array (0, $ this-> UserName, $ this-> PassWord, $ content, true); returnați $ this-> send_request ('metaWeblog.newPost', $ params);

Această funcție ia drept titluri, caractere, categorii, ca argumente de intrare. Apoi creează o structură de conținut din aceste argumente și stabilește câteva valori implicite.

Apoi vom crea o matrice de parametri din numele de utilizator, parola trecută anterior în constructor și din matricea de conținut pe care am făcut-o de la parametrii de intrare.

Această funcție poate fi apelată după cum urmează.

 $ objXMLRPClientWordPress-> create_post ("Hello WordPress XML-RPC", "Acesta este conținutul mesajului realizat prin XML-RPC", ");

ID-ul postului postului nou creat este valoarea returnată de acest API. Dacă vom crea o tabelă din API și vom tipări rezultatele, vom arăta după cum urmează.

Dacă mergem să vedem instalarea WordPress, postul va apărea pe el după cum urmează


Pasul 8 Crearea unei pagini a blogului dvs. utilizând XML-RPC

Acum vom crea o pagină pe instalarea WordPress folosind XML-RPC. Solicitarea pentru crearea unei pagini este wp.newPage care este de fapt o parte din API-ul WordPress.

Argumentele pentru acest lucru sunt aceleași ca și pentru crearea unei cereri de post.

În continuare este crează pagină funcţie:

 funcția create_page ($ title, $ body, $ encoding = 'UTF-8') $ title = htmlentities (titlu $, ENT_NOQUOTES, $ encoding); $ content = array ('title' => $ titlu, 'descriere' => $ body); $ params = array (0, $ this-> Nume utilizator, $ this-> PassWord, $ content, true); returnați $ this-> send_request ('wp.newPage', $ params); 

Acest lucru ia în principiu titlul și corpul ca intrări și apoi creează parametrii necesari pentru cerere, apoi trimite cererea.

Vom numi funcția după cum urmează

 $ objXMLRPClientWordPress-> create_page ("Pagina WordPress XML-RPC", "Acesta este conținutul primei pagini realizat prin XML-RPC");

Apoi sunați:

 $ ObjXMLRPClientWordPress-> sayHello ()

Returul pentru această solicitare este id-ul paginii paginii nou creată. Acum, dacă executăm această funcție și verificăm instalarea WordPress, pagina nouă creată va fi văzută după cum urmează.


Pasul 9 Obținerea listei autorilor unui blog utilizând XML-RPC

Acum vom crea o funcție pentru a obține lista autorilor din instalarea WordPress prin intermediul XML-RPC. Cererea de obținere a listei de autori este wp.getAuthors care este, de asemenea, parte din API-ul WordPress.

Parametrii pentru această solicitare sunt după cum urmează:

  • blogid (care este 0 dacă aveți doar un blog pe instalarea dvs.)
  • nume de utilizator
  • parola

Functia display_authors este după cum urmează:

 funcția display_authors () $ params = array (0, $ this-> Nume utilizator, $ this-> PassWord); returnați $ this-> send_request ('wp.getAuthors', $ params); 

Nu iau nici un parametru care utilizează doar numele de utilizator și parola stocate pentru a trimite solicitarea. Rezultatul acestei funcții este un șir despre detaliile autorului tuturor autorilor de pe blog.

Putem numi această funcție după cum urmează:

 $ ObjXMLRPClientWordPress-> display_authors ();

Următorul este tabelul creat din solicitarea și răspunsul diferitelor solicitări din acest tutorial.


Pasul 10 Știind despre o altă operație importantă susținută de WordPress XML-RPC

Ca și celelalte solicitări discutate, WordPress suportă aproape toate operațiile importante pe care le puteți efectua pe WordPress.

Sunt acceptate cereri pentru

  • Crearea, editarea, ștergerea paginilor și postărilor
  • Crearea, editarea, ștergerea comentariilor
  • Lista autorilor și detaliile blogului
  • Pentru a obține postări recente și o listă de categorii

Și multe altele sunt susținute.


Concluzie

Suportul XML-RPC pe WordPress vă permite să scrieți alte programe sau scripturi care pot automatiza sarcini în instalarea WordPress sau în alt software client pentru a îndeplini sarcinile de la distanță.

Funcții precum XML-RPC ajută WordPress să fie o platformă foarte deschisă și extensibilă. Bloguri atât de fericite cu WordPress!

Aveți o anumită sarcină pe care doriți să o utilizați pentru XML-RPC? Există software specific pe care doriți să îl utilizați cu WordPress care utilizează XML-RPC? Spuneți-ne în comentariile de mai jos!

Cod