XML-RPC in WordPress

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.


Schritt 1 Grundlegendes zu XML-RPC in WordPress

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..


Schritt 2 Aktivieren der XML-RPC-Unterstützung bei der Installation von WordPress

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).


Schritt 3: Kenntnis der Dateien und Klassen in WordPress, die XML-RPC ermöglichen

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.


Schritt 4 Verschiedene Arten von APIs kennen, die von WordPress XML-RPC Server unterstützt werden

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:

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

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 ');

Schritt 5 Erstellen der XMLRPClientWordPress Klasse in PHP

Jetzt 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.


Schritt 6 Senden der ersten Sag Hallo XML-RPC-Anfrage an Ihre WordPress-Installation

Um 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.


Schritt 7 Erstellen Sie ein Blog mit XML-RPC

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
  • Inhalt Struktur des Beitrags, d. H. Unterschiedliche Informationen über den Beitrag Titel, Inhalt, Kategorien usw.
  • veröffentlichen ob der Post veröffentlicht werden soll

Die 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


Schritt 8 Erstellen einer Seite in Ihrem Blog mithilfe von XML-RPC

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.


Schritt 9 Abrufen der Liste der Autoren eines Blogs mithilfe von XML-RPC

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.


Schritt 10 Kenntnis einiger anderer wichtiger Vorgänge, die von WordPress XML-RPC unterstützt werden

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

  • Seiten und Beiträge erstellen, bearbeiten, löschen
  • Kommentare erstellen, bearbeiten, löschen
  • Auflisten von Autoren und Blogdetails
  • Um aktuelle Beiträge und eine Liste von Kategorien zu erhalten

Und vieles mehr wird unterstützt.


Fazit

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!