XML-RPC ist ein Protokoll für Remoteprozeduraufrufe, das XML für den Datenaustausch verwendet und hauptsächlich HTTP für den eigentlichen Aufruf. In XML-RPC erstellt der Client, der eine Remote-Methode aufrufen möchte, die Eingabeparameter in Form von XML und sendet diese über eine HTTP-Anforderung an einen Remote-Server, der das XML-RPC-Protokoll implementiert. Der Remote-Server, der das XML-RPC-Protokoll implementiert, erhält die Anforderung, führt die Remote-Methode aus und gibt das Ergebnis im XML-Format zurück.
In diesem Artikel erfahren Sie, wie Sie mit XML-RPC Methoden in Ihrer WordPress-Installation aufrufen.
WordPress ist eine vollständige Blogging-Plattform. Es ist sehr anpassbar und offen für andere Systeme, um eine Verbindung herzustellen und mit ihm zu kommunizieren. XML-RPC in WordPress trägt zur Offenheit von WordPress bei, indem andere Systeme oder Software Vorgänge an der WordPress-Installation sogar aus der Ferne ausgeführt werden. Mit WordPress XML-RPC können also WordPress-Blogging-Clients erstellt werden. Einige andere Programme erledigen Batch-Aufgaben wie das Erstellen mehrerer Beiträge aus einer Datei usw..
Standardmäßig ist XML-RPC in Ihrer WordPress-Installation nicht aktiviert. Damit Ihre WordPress-Installation XML-RPC-Anforderungen verarbeiten kann, müssen Sie diese Funktion auf Ihrer Website aktivieren.
Um diese Funktion zu aktivieren, müssen Sie den Admin-Bereich aufrufen. Dort müssen Sie unter Einstellungen -> Schreiben die Option XML-RPC aktivieren (siehe unten).
Alle XML-RPC-Anforderungen werden an die gesendet xmlrpc.php Datei, die sich in Ihrem Hauptinstallationsverzeichnis von WordPress befindet. Die Datei führt im Wesentlichen einen Bootstrap zum Laden der WordPress-Umgebung aus und erstellt dann ein Objekt der Klasse wp_xmlrpc_server
welche ist am ort vorhanden wp-includes / class-wp-xmlrpc-server.php.
Das wp_xmlrpc_server
class ist für die Behandlung aller XML-RPC-Anforderungen verantwortlich, die von den XML-RPC-Clients stammen.
WordPress XML-RPC-Server unterstützt mehrere Arten von APIs für XML-RPC. Folgende API-Typen werden vom WordPress XML-RPC-Server unterstützt:
Obwohl es nicht viel Dokumentation zu all dem gibt, ein kurzer Blick auf die wp_xmlrpc_server
Diese Klasse hilft dabei, den genauen Namen der APIs zu ermitteln, die vom XML-RPC-Server von WordPress unterstützt werden.
Funktion 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' => 'this: 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.getPage '' > 'this: wp_getPageTemplates', 'wp.getOptions' => 'this: wp_getOptions', 'wp.setOptions' => 'this: wp_setOptions', 'wp.getComment' => 'this: 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_top ' > 'this: wp_getPostFormats', // Blogger-API 'blogger.getUsersBlogs' => 'this: blogger_getUsersBlogs', 'blogger.getUserInfo' => 'this: blogger_getUserInfo', 'blogger.getPost' => 'this: blogger_getPost' => 'this: '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 (mit MT-Erweiterungen für Strukturen)' metaWeblog.newPost '=>' this: mw_newPost ',' metaWeblog.editPost '=>' this: mw _editPost ',' metaWeblog.getPost '=>' this: mw_getPost ',' metaWeblog.getRecentPosts '=>' this: mw_getRecentPosts ',' metaWeblog.getCategories '=>' this: mw_getCategories ',' metaWeblog.newMediaObject ' this: mw_newMediaObject ', // MetaWeblog-API-Aliase für die Blogger-API // siehe 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' = ' this: addTwoNumbers ');
XMLRPClientWordPress
Klasse in PHPJetzt erstellen wir eine Klasse XMLRPClientWordPress
in PHP, das Funktionen zur Ausführung verschiedener Operationen an Ihrer WordPress-Installation über XML-RPC-Aufrufe bereitstellt.
Klasse XMLRPClientWordPress var $ XMLRPCURL = ""; var $ UserName = ""; var $ PassWord = "";
Zuerst erstellen wir eine Klasse mit drei Mitgliedern, die den Wert der XML-RPC-URL der WordPress-Installation sowie den Benutzernamen und das Kennwort der Installation enthalten.
Die XML-PRC-URL lautet http://ihrwordpressinstall.com/de/xmlrpc.php, und der Benutzername und das Passwort sind der Benutzername und das Passwort eines Benutzers des Blogs mit entsprechendem Zugriff.
Dann erstellen wir einen Konstruktor, der diese Werte übernimmt und wie folgt in den Klassenmitgliedern speichert.
// Öffentliche Funktion des Konstruktors __construct ($ xmlrpcurl, $ username, $ password) $ this-> XMLRPCURL = $ xmlrpcurl; $ this-> UserName = $ username; $ this-> PassWord = $ password;
Dann erstellen wir eine Anfrage senden
Funktion, die den Anforderungsnamen und die Parameter für die Anforderung als Eingabe übernimmt. Die Funktion erstellt dann eine XML-Anforderung aus den Eingabeparametern, sendet dann die Anforderung an die XML-RPC-URL der WordPress-Installation und gibt die Ergebnisse zurück.
Die Funktion ist wie folgt:
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); $ ergebnisse = curl_exec ($ ch); curl_close ($ ch); $ Ergebnisse zurückgeben;
Diese Funktion verwendet die PHP-Funktion xmlrpc_encode_request
Dadurch wird die XML-Anforderung erstellt. Anschließend wird die Anforderung über curl an die XML-RPC-URL der WordPress-Installation gesendet, die in der Klassenmitgliedervariable gespeichert ist.
Dann liefert diese Funktion das Ergebnis, das sie vom XML-RPC-Server erhält.
Sag Hallo
XML-RPC-Anfrage an Ihre WordPress-InstallationUm zu überprüfen, ob wir die Methoden auf dem WordPress-Installationsserver richtig aufrufen können, rufen wir auf demo.sayHello
Methode, es braucht keine Parameter und bei korrekter Ausführung gibt der WordPress XML-RPC-Server eine Zeichenfolge "Hallo!" zurück..
Die aufzurufende Funktion demo.sayHello
ist wie folgt:
function sayHello () $ params = array (); $ this-> send_request zurückgeben ('demo.sayHello', $ params);
Im Grunde wie die demo.sayHello
Die Methode nimmt keine Parameter an, wir senden ein leeres Array als Parameter und rufen dann auf Anfrage senden
durch Übergeben des Anforderungsnamens als demo.sayHello
.
Um diese Funktion aufzurufen, müssen Sie ein Klassenobjekt erstellen XMLRPClientWordPress
wie folgt:
$ objXMLRPClientWordPress = neues XMLRPClientWordPress ("http: //localhost/wordpress31/xmlrpc.php", "admin", "abbas");
Und dann anrufen:
$ objXMLRPClientWordPress-> sayHello ()
Die Ausgabe davon wird wie folgt sein:
Wenn Sie dasselbe Ergebnis erzielen, können Sie die Anforderung ordnungsgemäß an Ihren WordPress XML-RPC-Server senden und die Anforderung ordnungsgemäß empfangen.
Jetzt können Sie eine etwas komplexere Operation mit XML-RPC in Ihrer WordPress-Installation durchführen.
Lassen Sie uns nun eine Funktion erstellen, die über XML-RPC einen Beitrag im Blog erstellt.
Der Anforderungsname zum Erstellen eines Beitrags lautet metaWeblog.newPost
Das ist eigentlich ein Teil der MetaWeblog-API, die WordPress unterstützt.
Die für diese Anfrage erforderlichen Argumente sind die
blogid
(Welches ist 0, wenn Sie nur einen Blog in Ihrer Installation haben)Nutzername
Passwort
Titel
, Inhalt
, Kategorien
usw.veröffentlichen
ob der Post veröffentlicht werden sollDie Funktion create_post
ist wie folgt:
Funktion create_post ($ title, $ body, $ category, $ keywords = ", $ coding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ coding); $ keywords = htmlentities ($ keywords, ENT_NOQUOTES) , $ coding); $ content = array ('title' => $ title, 'description' => $ body, 'mt_allow_comments' => 0, // 1, um die Kommentare 'mt_allow_pings' => 0, // 1 zuzulassen trackbacks erlauben 'post_type' => 'post', 'mt_keywords' => $ keywords, 'categories' => array ($ category)); $ params = array (0, $ this-> Benutzername, $ this-> PassWord, $ content, true); zurückgeben $ this-> send_request ('metaWeblog.newPost', $ params);
Diese Funktion übernimmt den Titel, den Hauptteil, die Kategorien usw. als Eingabeargument. Dann erstellt es eine Inhaltsstruktur aus diesen Argumenten und legt einige Standardwerte fest.
Dann erstellen wir ein Parameter-Array aus dem Benutzernamen, dem zuvor im Konstruktor übergebenen Passwort und aus dem Content-Array, das wir aus den Eingabeparametern erstellt haben.
Diese Funktion kann wie folgt aufgerufen werden.
$ objXMLRPClientWordPress-> create_post ('Hallo WordPress XML-RPC', 'Dies ist der Inhalt des Posts, der über XML-RPC erstellt wurde', ");
Die Beitrags-ID des neu erstellten Beitrags ist der von dieser API zurückgegebene Wert. Wenn wir eine Tabelle aus der API erstellen und die Ergebnisse drucken, sieht das wie folgt aus.
Wenn wir uns die WordPress-Installation ansehen, erscheint der Beitrag wie folgt
Jetzt erstellen wir mit der XML-RPC eine Seite zur WordPress-Installation. Die Anforderung zum Erstellen einer Seite lautet wp.newPage
Das ist eigentlich ein Teil der WordPress-API.
Die Argumente dafür sind die gleichen wie für die Erstellung einer Post-Anfrage.
Folgendes ist das Seite erstellen
Funktion:
Funktion create_page ($ title, $ body, $ coding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ coding); $ content = array ('title' => $ title, 'description' => $ body); $ params = array (0, $ this-> UserName, $ this-> PassWord, $ content, true); $ this-> send_request zurückgeben ('wp.newPage', $ params);
Im Wesentlichen werden Titel und Text als Eingaben verwendet. Anschließend werden die für die Anforderung erforderlichen Parameter erstellt. Anschließend wird die Anforderung gesendet.
Wir werden die Funktion wie folgt aufrufen
$ objXMLRPClientWordPress-> create_page ('WordPress XML-RPC-Seite', 'Dies ist der Inhalt der ersten Seite, die über XML-RPC erstellt wurde');
Und dann anrufen:
$ objXMLRPClientWordPress-> sayHello ()
Die Rückgabe für diese Anforderung ist die Seiten-ID der neu erstellten Seite. Wenn wir nun diese Funktion ausführen und unsere WordPress-Installation überprüfen, wird die neu erstellte Seite folgendermaßen angezeigt.
Jetzt erstellen wir eine Funktion, um die Autorenliste aus Ihrer WordPress-Installation über XML-RPC abzurufen. Die Aufforderung zum Abrufen der Liste der Autoren lautet wp.getAuthors
das ist auch ein Teil der WordPress-API.
Die Parameter für diese Anforderung lauten wie folgt:
blogid
(Welches ist 0, wenn Sie nur einen Blog in Ihrer Installation haben)Nutzername
Passwort
Die Funktion display_authors
ist wie folgt:
Funktion display_authors () $ params = array (0, $ this-> Benutzername, $ this-> PassWord); return $ this-> send_request ('wp.getAuthors', $ params);
Es werden keine Parameter benötigt, sondern nur der gespeicherte Benutzername und das Kennwort zum Senden der Anforderung. Die Ausgabe dieser Funktion ist eine Zeichenfolge mit den Autorendetails aller Autoren im Blog.
Wir können diese Funktion wie folgt aufrufen:
$ objXMLRPClientWordPress-> display_authors ();
Es folgt die Tabelle, die aus der Anforderung und der Antwort der verschiedenen Anforderungen in diesem Lernprogramm erstellt wurde.
Wie die anderen Anfragen, unterstützt WordPress fast alle wichtigen Vorgänge, die Sie mit WordPress ausführen können.
Es werden Anfragen für unterstützt
Und vieles mehr wird unterstützt.
Die XML-RPC-Unterstützung für WordPress ermöglicht das Schreiben anderer Software oder Skripts, mit denen Aufgaben in Ihrer WordPress-Installation oder einer anderen Client-Software für die Remote-Ausführung von Aufgaben automatisiert werden können.
Features wie XML-RPC machen WordPress zu einer sehr offenen und erweiterbaren Plattform. So viel Spaß beim Bloggen mit WordPress!
Haben Sie eine bestimmte Aufgabe, für die Sie XML-RPC verwenden möchten? Gibt es eine bestimmte Software, die Sie gerne mit WordPress verwenden, die XML-RPC verwendet? Lass es uns in den Kommentaren wissen!