XML-RPC dans WordPress

XML-RPC est un protocole pour les appels de procédure distants qui utilise XML pour l'échange de données et utilise principalement HTTP pour l'appel réel. Dans XML-RPC, le client qui souhaite faire appel à une méthode distante crée les paramètres d'entrée sous la forme de XML et les envoie via une requête HTTP à un serveur distant implémentant le protocole XML-RPC. Le serveur distant implémentant le protocole XML-RPC récupère la demande, puis exécute la méthode distante et renvoie le résultat au format XML..

Dans cet article, nous allons voir comment appeler des méthodes sur votre installation WordPress à l'aide de XML-RPC.


Étape 1 Comprendre XML-RPC dans WordPress

WordPress est une plateforme de blogs complète. Il est rendu hautement personnalisable et ouvert pour que d'autres systèmes puissent s'y connecter et communiquer avec lui. XML-RPC dans WordPress facilite cette ouverture de WordPress en laissant d’autres systèmes ou logiciels effectuer des opérations sur l’installation de WordPress, même à distance. Donc, en utilisant WordPress XML-RPC peut créer des clients de blogging WordPress, un autre logiciel qui effectue des tâches de traitement par lots telles que la création de plusieurs publications à partir d'un fichier, etc..


Étape 2: activation de la prise en charge XML-RPC sur votre installation WordPress

Par défaut, XML-RPC n'est pas activé sur votre installation WordPress. Pour que votre installation WordPress puisse traiter les requêtes XML-RPC, vous devez activer cette fonctionnalité sur votre site Web..

Pour activer cette fonctionnalité, vous devrez aller à la section admin. Là, dans Paramètres -> Écriture, vous devrez activer l’option XML-RPC comme indiqué ci-dessous.


Étape 3: Connaître les fichiers et les classes dans WordPress rendant XML-RPC possible

Toutes les requêtes XML-RPC sont envoyées au xmlrpc.php fichier qui se trouve dans votre répertoire d’installation principal de WordPress. Le fichier effectue un bootstrap pour charger l’environnement WordPress puis crée un objet de la classe. wp_xmlrpc_server qui est présent à l'emplacement wp-includes / class-wp-xmlrpc-server.php.

le wp_xmlrpc_server La classe est responsable de la gestion de toutes les demandes XML-RPC provenant des clients XML-RPC..


Étape 4: Connaître les différents types d’API pris en charge par le serveur WordPress XML-RPC

Le serveur WordPress XML-RPC prend en charge plusieurs types d’API pour XML-RPC. Les types d’API pris en charge par le serveur WordPress XML-RPC sont les suivants:

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

Bien qu’il n’y ait pas beaucoup de documentation sur tout cela, un bref aperçu de la wp_xmlrpc_server class aidera à connaître le nom exact des API prises en charge par le serveur XML-RPC de WordPress.

 function wp_xmlrpc_server () $ this-> méthodes = array (// API WordPress 'wp.getUsersBlogs' => 'this: wp_getUsersBlogs', 'wp.getPage' => 'ceci: wp_getPage', 'wp.getPages' => 'this: wp_getPages', 'wp.newPage' => 'this: wp_newPage', 'wp.deletePage' => 'this: wp_deletePage', 'wp.editPage' => 'this: wp_editPage', 'wp.edit => 'this: wp_getPageList', 'wp.getAuthors' => 'this: wp_getAuthors', 'wp.getCategories' => 'this: mw_getCategories', // alias 'wp.getTags' => 'ceci: wp_getTags', 'wp.newCategory' => 'this: wp_newCategory', 'wp.deleteCategory' => 'this: wp_deleteCategory', 'wp.suggestCategories' => 'ceci: wp_suggestCategories', 'wp.uploadFile' => 'ceci: mw_wand ', // Alias' wp.getCommentCount '=>' this: wp_getCommentCount ',' wp.getPostStatusList '=>' this: wp_getPostStatusList ',' wp.getPageStatusList '=>' this: wp_getPageStatusList ', > 'this: wp_getPageTemplates', 'wp.getOptions' => 'ceci: wp_getOptions', 'wp.setOptions' => 'this: wp_setOptions', 'wp.getComment' => 'ceci: wp_getComment ',' wp.getComments '=>' this: wp_getComments ',' wp.deleteComment '=>' this: wp_deleteComment ',' wp.editComment '=>' ceci: wp_editComment ',' wp.newComment ','> this: wp_newComment ',' wp.getCommentStatusList '=>' this: wp_getCommentStatusList ',' wp.getMediaItem '=>' this: wp_getMediaItem ',' wp.getMediaItem '=>' ceci: wp_getMediaItem ',' wp.getMediaItem '=>' ceci: > 'this: wp_getPostFormats', // API de Blogger 'blogger.getUsersBlogs' => 'this: blogger_getUsersBlogs', 'blogger.getUserInfo' => 'this: blogger_getUserInfo', 'blogger.getPost' => 'ceci: blogger_getPost' 'blogger.getRecentPosts' => 'this: blogger_getRecentPosts', 'blogger.getTemplate' => 'this: blogger_getTemplate', 'blogger.setTemplate' => 'ceci: blogger_setTemplate', 'blogger.newPost' => 'this: blogger_newPost ',' blogger.editPost '=>' this: blogger_editPost ',' blogger.deletePost '=>' this: blogger_deletePost ', // MetaWeblog API (avec les extensions MT de structs)' metaWeblog.newPost '=>' this: mw_newPost ',' metaWeblog.editPost '=>' ceci: mw _editPost ',' metaWeblog.getPost '=>' this: mw_getPost ',' metaWeblog.getRecentPosts '=>' this: mw_getRecentPosts ',' metaWeblog.getCategories '=>' this: mw_getCecatégories ',' metaWeblog.jpg this: mw_newMediaObject ', // alias d’API MetaWeblog pour l’API Blogger // voir http://www.xmlrpc.com/stories/storyReader$2460' metaWeblog.deletePost '=>' this: blogger_deletePost ',' metaWeblog.getTelling '=> 'this: blogger_getTemplate', 'metaWeblog.setTemplate' => 'this: blogger_setTemplate', 'metaWeblog.getUsersBlogs' => 'ceci: blogger_getUsersBlogs', // MovableType API 'mt.getCategoryList' => 'ceci: mt.game' mt.getRecentPostTitles '=>' ceci: mt_getRecentPostTitles ',' mt.getPostCategories '=>' ceci: mt_getPostCategories ',' mt.getPostCategories ',' mt_getPostCategories ',' mt_getPostCategories ',' mt_setPostCategories ', , 'mt.supportedTextFilters' => 'this: mt_supportedTextFilters', 'mt.getTrackbackPings' => 'this: mt_getTrackbackPings', 'mt.publishPost' => 'this: mt_publishPost', // PingBack 'pingback.ping' => 'ceci: pingback_ping', 'pingback.extensions.getPingbacks' => 'ceci: pingback_extensions_getPingbacks', 'demo.sayHello' => 'ceci: sayHello', 'demo.addTwoNumbers' => ' ceci: addTwoNumbers ');

Étape 5 Création du XMLRPClientWordPress Cours en PHP

Maintenant nous allons créer une classe XMLRPClientWordPress en PHP qui fournira des fonctions pour effectuer différentes opérations sur votre installation WordPress via des appels XML-RPC.

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

Tout d'abord, nous allons créer une classe et avoir trois membres pour contenir la valeur de l'URL XML-RPC de l'installation WordPress, ainsi que le nom d'utilisateur et le mot de passe de l'installation..

L'URL XML-PRC est http://yourwordpressinstall.com/xmlrpc.php, et le nom d'utilisateur et le mot de passe sont le nom d'utilisateur et le mot de passe d'un utilisateur du blog ayant un accès approprié.

Ensuite, nous allons créer un constructeur pour prendre ces valeurs et les stocker dans les membres de la classe comme suit.

 // Fonction publique du constructeur __construct ($ xmlrpcurl, $ nom d'utilisateur, $ mot de passe) $ this-> XMLRPCURL = $ xmlrpcurl; $ this-> UserName = $ username; $ this-> PassWord = $ password; 

Ensuite, nous allons créer un envoyer une demande fonction qui prendra en entrée le nom de la requête et les paramètres de la requête. La fonction crée ensuite une requête XML à partir des paramètres d'entrée, puis envoie la requête à l'URL XML-RPC de l'installation WordPress et renvoie les résultats..

La fonction est la suivante:

 function 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); $ résultats = curl_exec ($ ch); curl_close ($ ch); retourne $ résultats; 

Cette fonction utilise la fonction PHP xmlrpc_encode_request qui crée la demande XML, nous utilisons ensuite curl pour envoyer la demande sur l'URL XML-RPC de l'installation WordPress stockée dans la variable membre de la classe.

Ensuite, cette fonction renvoie le résultat obtenu du serveur XML-RPC..


Étape 6 Envoi du premier Dis bonjour Demande XML-RPC à votre installation WordPress

Pour vérifier si nous pouvons appeler les méthodes sur le serveur d’installation WordPress correctement, nous appellerons demo.sayHello méthode, elle ne prend aucun paramètre et, si elle fonctionne correctement, le serveur WordPress XML-RPC renvoie la chaîne "Hello!".

La fonction à appeler demo.sayHello est comme suit:

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

Fondamentalement comme demo.sayHello méthode ne prend pas de paramètres, nous envoyons un tableau vide en tant que paramètre, puis appelons envoyer une demande en passant le nom de la requête en tant que demo.sayHello.

Pour appeler cette fonction, vous devez créer un objet de classe. XMLRPClientWordPress comme suit:

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

Et puis appelez:

 $ objXMLRPClientWordPress-> sayHello ()

La sortie de ceci sera comme suit:

Si vous obtenez le même résultat, cela signifie que vous pouvez envoyer la demande correctement à votre serveur WordPress XML-RPC et recevoir la demande correctement..

Maintenant, vous pouvez effectuer une opération un peu plus complexe en utilisant XML-RPC sur votre installation WordPress.


Étape 7: Créer une publication sur votre blog à l'aide de XML-RPC

Créons maintenant une fonction qui créera une publication sur le blog via XML-RPC.

Le nom de la demande pour la création d'un article est metaWeblog.newPost qui fait en fait partie de l'API MetaWeblog prise en charge par WordPress.

Les arguments requis pour cette requête sont les

  • blogid (ce qui est 0 si vous n'avez qu'un blog sur votre installation)
  • Nom d'utilisateur
  • mot de passe
  • Structure du contenu de la publication, c'est-à-dire différentes informations sur la publication, comme Titre, contenu, catégories etc.
  • publier c'est-à-dire s'il faut publier le message

La fonction create_post est comme suit:

 function create_post ($ title, $ body, $ category, $ keywords = ", $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ keywords = htmlentities ($ keywords, ENT_NOQUOTES , $ encoding); $ content = array ('title' => $ title, 'description' => $ body, 'mt_allow_comments' => 0, // 1 pour autoriser les commentaires 'mt_allow_pings' => 0, // 1 à autoriser les rétroliens 'post_type' => 'post', 'mt_keywords' => $ mots-clés, 'categories' => tableau ($ category)); $ params = array (0, $ this-> nom_utilisateur, $ this-> motPasse, $ content, true); retourne $ this-> send_request ('metaWeblog.newPost', $ params);

Cette fonction prend le titre, le corps, les catégories, etc. comme arguments d'entrée. Ensuite, il crée une structure de contenu à partir de ces arguments et définit des valeurs par défaut..

Ensuite, nous allons créer un tableau de paramètres à partir du nom d'utilisateur, mot de passe précédemment passé dans le constructeur et à partir du tableau de contenu que nous avons créé à partir des paramètres d'entrée..

Cette fonction peut être appelée comme suit.

 $ objXMLRPClientWordPress-> create_post ('Bonjour WordPress XML-RPC', 'Ceci est le contenu de la publication effectuée via XML-RPC', ");

L'ID de publication de la publication nouvellement créée est la valeur renvoyée par cette API. Si nous créons une table à partir de l'API et imprimons ses résultats, elle se présentera comme suit.

Si nous allons voir l’installation de WordPress, la publication y apparaîtra comme suit


Étape 8: Création d'une page de votre blog à l'aide de XML-RPC

Nous allons maintenant créer une page sur l'installation de WordPress à l'aide de XML-RPC. La demande de création d'une page est wp.newPage qui est en fait une partie de l'API WordPress.

Les arguments pour cela sont les mêmes que ceux pour la création d'une post-requête.

Voici le créer une page une fonction:

 function create_page ($ title, $ body, $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ content = array ('title' => $ title, 'description' => $ body); $ params = array (0, $ this-> nom d'utilisateur, $ this-> mot de passe, $ content, true); return $ this-> send_request ('wp.newPage', $ params); 

Cela prend essentiellement le titre et le corps en tant qu'entrées, puis crée les paramètres requis pour la demande, puis envoie la demande..

Nous appellerons la fonction comme suit

 $ objXMLRPClientWordPress-> create_page ('Page WordPress XML-RPC', 'Ceci est le contenu de la première page réalisée via XML-RPC');

Et puis appelez:

 $ objXMLRPClientWordPress-> sayHello ()

Le retour pour cette demande est l'identifiant de la page nouvellement créée. Maintenant, si nous exécutons cette fonction et vérifions notre installation WordPress, la page nouvellement créée sera vue comme suit.


Étape 9 Obtenir la liste des auteurs d'un blog à l'aide de XML-RPC

Nous allons maintenant créer une fonction pour obtenir la liste des auteurs de votre installation WordPress via XML-RPC. La demande pour obtenir la liste des auteurs est wp.getAuteurs qui fait également partie de l'API WordPress.

Les paramètres de cette requête sont les suivants:

  • blogid (ce qui est 0 si vous n'avez qu'un blog sur votre installation)
  • Nom d'utilisateur
  • mot de passe

La fonction display_authors est comme suit:

 function display_authors () $ params = array (0, $ this-> Nom d'utilisateur, $ this-> PassWord); return $ this-> send_request ('wp.getAuthors', $ params); 

Il ne prend aucun paramètre mais utilise simplement le nom d'utilisateur et le mot de passe stockés pour envoyer la demande. Le résultat de cette fonction est une chaîne contenant les détails de l'auteur sur tous les auteurs du blog..

Nous pouvons appeler cette fonction comme suit:

 $ objXMLRPClientWordPress-> display_authors ();

Voici la table créée à partir de la demande et de la réponse des différentes demandes de ce didacticiel..


Étape 10: connaître d'autres opérations importantes prises en charge par WordPress XML-RPC

Comme les autres requêtes abordées, WordPress prend en charge presque toutes les opérations importantes que l’on peut effectuer sur WordPress..

Il y a des demandes supportées pour

  • Création, édition, suppression de pages et de publications
  • Création, édition, suppression de commentaires
  • Liste des auteurs et des détails du blog
  • Pour obtenir les publications récentes et la liste des catégories

Et beaucoup plus sont pris en charge.


Conclusion

Le support XML-RPC sur WordPress permet d’écrire d’autres logiciels ou scripts permettant d’automatiser des tâches sur votre installation WordPress ou d’autres logiciels clients pour effectuer des tâches à distance..

Des fonctionnalités telles que XML-RPC aident WordPress à être une plate-forme très ouverte et extensible. Si heureux blogging avec WordPress!

Avez-vous une tâche particulière pour laquelle vous aimez utiliser XML-RPC? Y a-t-il un logiciel spécifique que vous aimez utiliser avec WordPress qui utilise XML-RPC? Faites-nous savoir dans les commentaires ci-dessous!