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.
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..
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.
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.
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:
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 ');
XMLRPClientWordPress
Klasse in PHPNu 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.
Zeg hallo
XML-RPC-aanvraag voor uw WordPress-installatieOm 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.
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
titel
, inhoud
, categorieën
enz.publiceren
dat wil zeggen of het bericht moet worden gepubliceerdDe 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
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.
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.
Net als de andere besproken aanvragen ondersteunt WordPress bijna alle belangrijke bewerkingen die men kan uitvoeren op WordPress.
Er worden aanvragen ondersteund
En nog veel meer worden ondersteund.
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!