XML-RPC in WordPress

XML-RPC is een protocol voor externe procedureaanroepen waarbij XML wordt gebruikt voor de gegevensuitwisseling en het gebruikt meestal HTTP voor de daadwerkelijke oproep. In XML-RPC maakt de client die een oproep wil doen naar een externe methode de invoerparameters in de vorm van XML en verzendt deze via een HTTP-verzoek naar een externe server die het XML-RPC-protocol implementeert. De externe server die het XML-RPC-protocol implementeert, krijgt het verzoek en voert vervolgens de externe methode uit en retourneert het resultaat terug in XML-indeling.

In dit artikel gaan we bekijken hoe u methoden kunt aanroepen in uw WordPress-installatie met behulp van XML-RPC.


Stap 1 XML-RPC in WordPress begrijpen

WordPress is een compleet blogplatform. Het is zeer aanpasbaar gemaakt en staat open voor andere systemen om ermee te verbinden en ermee te communiceren. XML-RPC in WordPress helpt deze openheid van WordPress door andere systemen of software bewerkingen in de WordPress-installatie te laten uitvoeren, zelfs op afstand. Het gebruik van WordPress XML-RPC kan dus WordPress-blogclients creëren, een andere software die sommige batchtaken uitvoert, zoals het maken van meerdere berichten van een bestand, enz..


Stap 2 XML-RPC-ondersteuning inschakelen bij u WordPress-installatie

Standaard is XML-RPC niet ingeschakeld in uw WordPress-installatie. Om ervoor te zorgen dat uw WordPress-installatie XML-RPC-aanvragen kan verwerken, moet u deze functie op uw website inschakelen.

Om deze functie in te schakelen, gaat u naar de admin-sectie. Daar moet u onder Instellingen -> Schrijven de optie XML-RPC inschakelen zoals hieronder getoond.


Stap 3 Ken de bestanden en klassen in WordPress die XML-RPC mogelijk maken

Alle XML-RPC-aanvragen worden verzonden naar de xmlrpc.php bestand dat aanwezig is in uw belangrijkste WordPress installatiedirectory. Het bestand doet in principe een bootstrap voor het laden van de WordPress-omgeving en maakt vervolgens een object van de klasse wp_xmlrpc_server die aanwezig is op de locatie wp-includes / class-wp-xmlrpc-server.php.

De wp_xmlrpc_server class is verantwoordelijk voor het verwerken van alle XML-RPC-aanvragen die afkomstig zijn van de XML-RPC-clients.


Stap 4 Ken verschillende soorten API's Ondersteund door WordPress XML-RPC Server

WordPress XML-RPC-server ondersteunt meerdere typen op API's voor XML-RPC. Hieronder volgen de typen API's die WordPress XML-RPC-server ondersteunt:

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

Hoewel er niet veel documentatie over dit alles is, een korte blik op de wp_xmlrpc_server klasse zal helpen om de exacte naam van de API's te kennen die worden ondersteund door de XML-RPC-server van WordPress.

 functie 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' => 'dit: 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' => 'dit: 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' => 'dit: blogger_getPost', 'blogger.getRecentPosts' => 'this: blogger_getRecentPosts', 'blogger.getTemplate' => 'this: blogger_getTemplate', 'blogger.setTemplate' => 'this: blogger_setTemplate', 'blogger.newPost' => 'this: blogger_newPost ',' blogger.editPost '=>' this: blogger_editPost ',' blogger.deletePost '=>' this: blogger_deletePost ', // MetaWeblog API (met MT extensions to structs)' metaWeblog.newPost '=>' this: mw_newPost ',' metaWeblog.editPost '=>' dit: mw _editPost ',' metaWeblog.getPost '=>' this: mw_getPost ',' metaWeblog.getRecentPosts '=>' this: mw_getRecentPosts ',' metaWeblog.getCategories '=>' this: mw_getCategories ',' metaWeblog.newMediaObject '=>' dit: mw_newMediaObject ', // MetaWeblog API-aliassen voor Blogger API // zie 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_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' => ' dit: addTwoNumbers ');

Stap 5 De. Maken XMLRPClientWordPress Klasse in PHP

Nu gaan we een klas maken XMLRPClientWordPress in PHP die functies biedt voor het uitvoeren van verschillende bewerkingen in uw WordPress-installatie via XML-RPC-aanroepen.

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

Eerst zullen we een klasse maken en er drie leden in hebben om de waarde van de XML-RPC-URL van de WordPress-installatie en de gebruikersnaam en het wachtwoord van de installatie te bevatten..

De XML-PRC URL is http://yourwordpressinstall.com/xmlrpc.php, en de gebruikersnaam en het wachtwoord zijn de gebruikersnaam en het wachtwoord van een gebruiker van de blog met de juiste toegang.

Vervolgens maken we een constructor om deze waarden te nemen en deze als volgt in de klasleden op te slaan.

 // Constructor public function __construct ($ xmlrpcurl, $ gebruikersnaam, $ wachtwoord) $ this-> XMLRPCURL = $ xmlrpcurl; $ this-> UserName = $ gebruikersnaam; $ this-> PassWord = $ wachtwoord; 

Dan zullen we een maken Verzend verzoek functie die de naam van het verzoek en de parameters voor het verzoek als invoer zal nemen. De functie maakt dan een XML-verzoek aan op basis van de invoerparameters en verzendt de aanvraag vervolgens naar de WordPress XML-RPC-installatie-URL en retourneert de resultaten.

De functie is als volgt:

 functie send_request ($ requestname, $ params) $ request = xmlrpc_encode_request ($ requestname, $ params); $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ request); 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); return $ resultaten; 

Deze functie maakt gebruik van de PHP-functie xmlrpc_encode_request die de XML-aanvraag maakt, gebruiken we dan krul om de aanvraag te verzenden naar de XML-RPC-URL van de WordPress-installatie die is opgeslagen in de variabele van de klasse.

Dan retourneert deze functie het resultaat dat wordt opgehaald van de XML-RPC-server.


Stap 6 De eerste verzenden Zeg hallo XML-RPC-aanvraag voor uw WordPress-installatie

Om te controleren of we de methoden op de WordPress installatieserver correct kunnen aanroepen, bellen we demo.sayHello methode, er is geen parameter vereist en als deze correct wordt uitgevoerd, retourneert de WordPress XML-RPC-server een tekenreeks "Hallo!".

De functie om te bellen demo.sayHello is als volgt:

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

Kortom als de demo.sayHello methode neemt geen parameters, we sturen een lege array als de parameter en dan bellen Verzend verzoek door de naam van het verzoek door te geven als demo.sayHello.

Om deze functie aan te roepen, moet u een object van klasse maken XMLRPClientWordPress als volgt:

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

En bel dan:

 $ ObjXMLRPClientWordPress-> sayHello ()

De uitvoer hiervan is als volgt:

Als u hetzelfde resultaat krijgt, betekent dit dat u het verzoek correct naar uw WordPress XML-RPC-server kunt verzenden en het verzoek goed kunt ontvangen.

Nu kunt u een iets complexere bewerking uitvoeren met behulp van XML-RPC in uw WordPress-installatie.


Stap 7 Creëer een bericht op uw blog met XML-RPC

Laten we nu een functie maken die een bericht op de blog maakt via XML-RPC.

De naam van het verzoek voor het maken van een bericht is metaWeblog.newPost die eigenlijk deel uitmaakt van de MetaWeblog-API die WordPress ondersteunt.

De benodigde argumenten voor dit verzoek zijn de

  • blogID (dat is 0 als je maar één blog hebt in je installatie)
  • gebruikersnaam
  • wachtwoord
  • Inhoudsstructuur van het bericht, d.w.z. verschillende informatie over het bericht titel, inhoud, categorieën enz.
  • publiceren dat wil zeggen of het bericht moet worden gepubliceerd

De functie create_post is als volgt:

 functie create_post ($ title, $ body, $ category, $ keywords = ", $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ keywords = htmlentities ($ keywords, ENT_NOQUOTES , $ codering); $ content = array ('title' => $ title, 'description' => $ body, 'mt_allow_comments' => 0, // 1 om reacties toe te staan ​​'mt_allow_pings' => 0, // 1 to laat trackbacks toe 'post_type' => 'post', 'mt_keywords' => $ keywords, 'categories' => array ($ category)); $ params = array (0, $ this-> UserName, $ this-> PassWord, $ content, true); return $ this-> send_request ('metaWeblog.newPost', $ params);

Deze functie neemt de titel, het lichaam, categorieën enz. Als invoerargumenten. Vervolgens maakt het een inhoudsstructuur van deze argumenten en stelt een aantal standaardwaarden in.

Vervolgens maken we een parameterarray uit de gebruikersnaam, het wachtwoord dat eerder is doorgegeven in de constructor en uit de contentarray die we hebben gemaakt met de invoerparameters.

Deze functie kan als volgt worden genoemd.

 $ objXMLRPClientWordPress-> create_post ('Hello WordPress XML-RPC', 'Dit is de inhoud van post gedaan via XML-RPC', ");

De post-ID van de nieuw gemaakte post is de waarde die door deze API wordt geretourneerd. Als we een tabel maken vanuit de API en de resultaten afdrukken, ziet deze er als volgt uit.

Als we de WordPress-installatie gaan bekijken, wordt het bericht als volgt weergegeven


Stap 8 Een pagina maken Uw blog met XML-RPC

Nu zullen we een pagina maken over de WordPress-installatie met behulp van de XML-RPC. Het verzoek om een ​​pagina te maken is wp.newPage wat eigenlijk een onderdeel is van de WordPress API.

De argumenten hiervoor zijn dezelfde als die voor het maken van een postverzoek.

Het volgende is het creëer pagina functie:

 functie 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); return $ this-> send_request ('wp.newPage', $ params); 

Dit neemt in principe de titel en het lichaam als invoer aan en maakt vervolgens de vereiste parameters voor het verzoek en verzendt vervolgens het verzoek.

We zullen de functie als volgt noemen

 $ objXMLRPClientWordPress-> create_page ('WordPress XML-RPC-pagina', 'Dit is de inhoud van de eerste pagina gedaan via XML-RPC');

En bel dan:

 $ ObjXMLRPClientWordPress-> sayHello ()

De terugkeer voor deze aanvraag is de pagina-ID van de nieuw gemaakte pagina. Als we nu deze functie uitvoeren en onze WordPress-installatie controleren, ziet de nieuw gemaakte pagina er als volgt uit.


Stap 9 De lijst met auteurs van een blog ophalen met XML-RPC

Nu zullen we een functie maken om de auteurslijst van uw WordPress-installatie te krijgen via XML-RPC. Het verzoek om de lijst met auteurs te krijgen is wp.getAuthors wat ook een onderdeel is van de WordPress API.

De parameters voor dit verzoek zijn als volgt:

  • blogID (dat is 0 als je maar één blog hebt in je installatie)
  • gebruikersnaam
  • wachtwoord

De functie display_authors is als volgt:

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

Het vereist geen parameters alleen gebruikt de opgeslagen gebruikersnaam en wachtwoord om het verzoek te verzenden. De uitvoer van deze functie is een string over de auteursdetails van alle auteurs op de blog.

We kunnen deze functie als volgt noemen:

 $ ObjXMLRPClientWordPress-> display_authors ();

Hieronder volgt de tabel die is gemaakt op basis van het verzoek en de reactie van de verschillende verzoeken in deze zelfstudie.


Stap 10 Weten over enkele andere belangrijke handelingen Ondersteund door WordPress XML-RPC

Net als de andere besproken aanvragen ondersteunt WordPress bijna alle belangrijke bewerkingen die men kan uitvoeren op WordPress.

Er worden aanvragen ondersteund

  • Pagina's en berichten maken, bewerken en verwijderen
  • Opmerkingen maken, bewerken of verwijderen
  • Auteurs en blogdetails vermelden
  • Voor het ophalen van recente berichten en een lijst met categorieën

En nog veel meer worden ondersteund.


Conclusie

XML-RPC-ondersteuning op WordPress maakt het mogelijk om andere software of scripts te schrijven die taken in uw WordPress-installatie of een andere clientsoftware kunnen automatiseren om taken op afstand uit te voeren.

Functies zoals XML-RPC helpen WordPress om een ​​zeer open en uitbreidbaar platform te zijn. Zo blij bloggen met WordPress!

Heeft u een specifieke taak waarvoor u graag XML-RPC gebruikt? Is er specifieke software die u graag gebruikt met WordPress die XML-RPC gebruikt? Laat het ons weten in de comments hieronder!