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.
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.
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.
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.
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:
Ä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 ');
XMLRPClientWordPress
Klass i PHPNu 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.
Säg hej
XML-RPC-förfrågan på din WordPress-installationFö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.
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
titel
, innehåll
, kategorier
etc.publicera
det vill säga om posten ska publicerasFunktionen 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
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.
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.
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
Och mycket mer stöds.
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!