XML-RPC i WordPress

XML-RPC är ett protokoll för fjärrproceduresamtal som använder XML för datautbytet och det använder oftast HTTP för det faktiska samtalet. I XML-RPC skapar klienten som vill ringa till en avlägsen metod inmatningsparametrarna i form av XML och skickar den via en HTTP-begäran till en fjärrserver som implementerar XML-RPC-protokollet. Fjärrservern som implementerar XML-RPC-protokollet får begäran och utför sedan fjärrmetoden och returnerar resultatet tillbaka i XML-format.

I den här artikeln kommer vi att se hur man ringer metoder på din WordPress-installation med hjälp av XML-RPC.


Steg 1 Förstå XML-RPC i WordPress

WordPress är en komplett bloggplattform. Den görs mycket anpassningsbar och öppen för andra system att ansluta och kommunicera med det. XML-RPC i WordPress hjälper denna öppenhet i WordPress genom att låta andra system eller programvara utföra operationer i WordPress-installationen, även på distans. Så att använda WordPress XML-RPC kan skapa WordPress blogging klienter, någon annan programvara som gör några batchuppgifter som att skapa flera inlägg från en fil, etc.


Steg 2 Aktivera XML-RPC-stöd på din WordPress-installation

Som standard är XML-RPC inte aktiverat i din WordPress-installation. För att din WordPress-installation ska kunna fungera med XML-RPC-förfrågningar måste du aktivera den här funktionen på din webbplats.

För att aktivera den här funktionen kommer du att gå till admin sektionen. Där, under Inställningar -> Skrivning måste du aktivera XML-RPC-alternativet som visas nedan.


Steg 3 Att veta filerna och klasserna i WordPress som gör XML-RPC möjlig

Alla XML-RPC-förfrågningarna skickas till xmlrpc.php fil som finns i din huvudsakliga WordPress installations katalog. Filen gör i grunden en bootstrap för att ladda WordPress-miljön och skapar sedan ett objekt av klassen wp_xmlrpc_server som är närvarande på platsen wp-includes / klass-wp-xmlrpc-server.php.

De wp_xmlrpc_server klassen ansvarar för hanteringen av alla XML-RPC-förfrågningar som kommer från XML-RPC-klienterna.


Steg 4 Att veta olika typer av API: er som stöds av WordPress XML-RPC Server

WordPress XML-RPC-servern stöder flera typer på API: er för XML-RPC. Följande är de typer av API: er som WordPress XML-RPC-servern stöder:

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

Även om det inte finns mycket dokumentation om allt detta, en kort titt på wp_xmlrpc_server klassen hjälper till att känna till det exakta namnet på API: erna som stöds av WordPress 'XML-RPC-server.

 funktion wp_xmlrpc_server () $ this-> methods = array (// WordPress API 'wp.getUsersBlogs' => 'detta: 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' => 'det här: 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' => 'det här: 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' => 'det här: wp_setOptions', 'wp.getComment' => 'this: wp_getComment ',' wp.editComment '=>' this: wp_getComments ',' wp.deleteComment '=>' det här: wp_deleteComment ',' wp.editComment '=>' this: wp_editComment ',' wp.newComment '=>' Detta: 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' => 'det här: blogger_setTemplate', 'blogger.newPost' => 'this: blogger_newPost ',' blogger.editPost '=>' this: blogger_editPost ',' blogger.deletePost '=>' this: blogger_deletePost ', // MetaWeblog API (med MT-tillägg till strukturer)' metaWeblog.newPost '=>' this: mw_newPost ',' metaWeblog.editPost '=>' this: mw _editPost ',' metaWeblog.getPost '=>' this: mw_getPost ',' metaWeblog.getRecentPosts '=>' det här: mw_getRecentPosts ',' metaWeblog.getCategories '=>' this: mw_getCategories ',' metaWeblog.newMediaObject '=>' detta: mw_newMediaObject ', // MetaWeblog API-alias för Blogger API // se 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' => 'det här: mt_getCategoryList' mt.getRecentPostTitles '=>' this: mt_getRecentPostTools ',' mt.getPostCategories '=>' this: mt_getPostCategories ',' mt.setPostCategories '=>' this: mt_setPostCategories ',' mt.supportedMethods '=>' det här: mt_supportedMethods ' , 'mt.supportedTextFilters' => 'this: mt_supportedTextFilters', 'mt.getTrackbackPings' => 'this: mt_getTrackbackPings', 'mt.publishPost' => 'det här: mt_publishPost', // Pingback 'pingback.ping' => 'this: pingback_ping', 'pingback.extensions.getPingbacks' => 'detta: pingback_extensions_getPingbacks', 'demo.sayHello' => 'this: sayHello', 'demo.addTwoNumbers' => ' detta: addTwoNumbers ');

Steg 5 Skapa XMLRPClientWordPress Klass i PHP

Nu ska vi skapa en klass XMLRPClientWordPress i PHP som kommer att ge funktioner för att utföra olika operationer på din WordPress-installation via XML-RPC-samtal.

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

Först ska vi skapa en klass och ha tre medlemmar i den för att hålla värdet på XML-RPC-URL-adressen för WordPress-installationen och användarnamnet och lösenordet för installationen.

XML-PRC-webbadressen är http://yourwordpressinstall.com/xmlrpc.php, och användarnamnet och lösenordet är användarnamnet och lösenordet till en användare av bloggen med lämplig åtkomst.

Då ska vi skapa en konstruktör för att ta dessa värden och lagra dem i klassmedlemmarna enligt följande.

 // Konstruktörens offentliga funktion __construct ($ xmlrpcurl, $ användarnamn, $ lösenord) $ this-> XMLRPCURL = $ xmlrpcurl; $ this-> UserName = $ användarnamn; $ this-> PassWord = $ lösenord; 

Då skapar vi en skicka förfrågan funktion som tar begäran namn och parametrar för begäran som inmatning. Funktionen skapar sedan en XML-förfrågan från ingångsparametrarna och skickar sedan begäran till WordPress-installationen XML-RPC-URL och returnerar resultaten.

Funktionen är som följer:

 funktion 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); returnera $ resultat; 

Denna funktion använder PHP-funktionen xmlrpc_encode_request som skapar XML-förfrågan så använder vi curl för att skicka förfrågan på XML-RPC-URL-adressen för WordPress-installationen som lagras i klassmedlemsvariabeln.

Då returnerar den här funktionen resultatet som det kommer från XML-RPC-servern.


Steg 6 Skicka den första Säg hej XML-RPC-förfrågan på din WordPress-installation

För att kontrollera om vi kan ringa metoderna på WordPress installationsservern ordentligt, kommer vi att ringa demo.sayHello metod, det tar ingen parameter och som om den körs korrekt returnerar WordPress XML-RPC-servern en sträng "Hej!".

Funktionen att ringa demo.sayHello enligt följande:

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

I grund och botten som demo.sayHello Metoden tar ingen parametrar vi skickar en tom matris som parameter och ringer sedan skicka förfrågan genom att skicka förfrågan namn som demo.sayHello.

För att ringa denna funktion måste du skapa ett objekt av klassen XMLRPClientWordPress som följer:

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

Och ring då:

 $ ObjXMLRPClientWordPress-> sayHello ()

Resultatet av detta kommer att vara enligt följande:

Om du får samma resultat betyder det att du kan skicka förfrågan ordentligt till din WordPress XML-RPC-server och få förfrågan ordentligt.

Nu kan du utföra en lite mer komplex operation med XML-RPC på din WordPress-installation.


Steg 7 Skapa en posta din blogg med XML-RPC

Låt oss nu skapa en funktion som skapar ett inlägg på bloggen via XML-RPC.

Förfrågningsnamnet för att skapa ett inlägg är metaWeblog.newPost vilket är en del av MetaWeblog API som WordPress stöder.

Argumenten som krävs för denna förfrågan är

  • blogid (vilket är 0 om du bara har en blogg på din installation)
  • Användarnamn
  • Lösenord
  • Innehållsstruktur för posten, dvs olika uppgifter om posten som titel, innehåll, kategorier etc.
  • publicera det vill säga om posten ska publiceras

Funktionen create_post enligt följande:

 funktion create_post ($ title, $ body, $ kategori, $ keywords = ", $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ keywords = htmlentities ($ nyckelord, ENT_NOQUOTES $ $ = array ('title' => $ title, 'description' => $ body, 'mt_allow_comments' => 0, // 1 för att tillåta kommentarer 'mt_allow_pings' => 0, // 1 till tillåta trackbacks 'post_type' => 'post', 'mt_keywords' => $ sökord, 'kategorier' => array ($ kategori)); $ params = array (0, $ this-> UserName, $ this-> PassWord, $ innehåll, sant), returnera $ this-> send_request ('metaWeblog.newPost', $ params);

Den här funktionen tar titeln, kroppen, kategorierna etc som inmatningsargument. Då skapar den en innehållsstruktur från dessa argument och anger vissa standardvärden.

Därefter kommer vi att skapa en parametermatris från användarnamnet, lösenordet som tidigare passerade i konstruktören och från innehållsuppsättningen som vi gjorde från ingångsparametrarna.

Denna funktion kan kallas enligt följande.

 $ objXMLRPClientWordPress-> create_post ('Hello WordPress XML-RPC', 'Detta är innehållet i posten gjort via XML-RPC', ');

Post-ID för det nyligen skapade inlägget är det värde som returneras av detta API. Om vi ​​skapar en tabell från API: n och skriv ut resultaten kommer den att se ut som följer.

Om vi ​​går och ser WordPress-installationen kommer inlägget att visas på det enligt följande


Steg 8 Skapa en sida din blogg med XML-RPC

Nu ska vi skapa en sida på WordPress-installationen med hjälp av XML-RPC. Begäran om att skapa en sida är wp.newPage vilket är en del av WordPress API.

Argumenten för detta är samma som för skapandet av en postförfrågan.

Följande är skapa sida fungera:

 funktion create_page ($ title, $ body, $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ content = array ('title' => $ title, 'description' => $ body); $ params = array (0, $ this-> Användarnamn, $ this-> PassWord, $ content, true); returnera $ this-> send_request ('wp.newPage', $ params); 

Detta tar i grund och botten titeln och kroppen som ingångar och skapar sedan de parametrar som krävs för begäran och skickar sedan begäran.

Vi ringer funktionen enligt följande

 $ objXMLRPClientWordPress-> create_page ('WordPress XML-RPC-sida', 'Detta är innehållet på första sidan gjort via XML-RPC');

Och ring då:

 $ ObjXMLRPClientWordPress-> sayHello ()

Avkastningen för denna förfrågan är sidans id på den nyskapade sidan. Nu om vi kör den här funktionen och kolla vår WordPress-installation, ses den nyskapade sidan enligt följande.


Steg 9 Få listan över författare till en blogg med XML-RPC

Nu ska vi skapa en funktion för att få författarlistan från din WordPress-installation via XML-RPC. Begäran om att få listan över författare är wp.getAuthors som också ingår i WordPress API.

Parametrarna för denna förfrågan är följande:

  • blogid (vilket är 0 om du bara har en blogg på din installation)
  • Användarnamn
  • Lösenord

Funktionen display_authors enligt följande:

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

Det tar ingen parametrar bara använder det lagrade användarnamnet och lösenordet för att skicka förfrågan. Utgången från denna funktion är en sträng om författarens uppgifter om alla författare på bloggen.

Vi kan ringa denna funktion enligt följande:

 $ ObjXMLRPClientWordPress-> display_authors ();

Nedan följer tabellen från begäran och svaret på de olika förfrågningarna i denna handledning.


Steg 10 Vet om någon annan viktig operation som stöds av WordPress XML-RPC

Som de andra begärda frågorna stöder WordPress nästan alla viktiga operationer man kan utföra på WordPress.

Det finns stöd för ansökningar

  • Skapa, redigera, ta bort sidor och inlägg
  • Skapa, redigera, ta bort kommentarer
  • Lista författare och blogguppgifter
  • För att få nya inlägg och lista över kategorier

Och mycket mer stöds.


Slutsats

XML-RPC-stöd på WordPress gör att man kan skriva annan programvara eller skript som kan automatisera uppgifter på din WordPress-installation eller någon annan klientprogramvara för att utföra uppgifter på distans.

Funktioner som XML-RPC hjälper WordPress att vara en mycket öppen och utökad plattform. Så glad att blogga med WordPress!

Har du en viss uppgift som du gillar att använda XML-RPC för? Finns det specifik programvara som du gillar att använda med WordPress som använder XML-RPC? Låt oss veta i kommentarerna nedan!