XML-RPC en WordPress

XML-RPC es un protocolo para llamadas a procedimientos remotos que utiliza XML para el intercambio de datos y utiliza principalmente HTTP para la llamada real. En XML-RPC, el cliente que desea realizar una llamada a un método remoto crea los parámetros de entrada en forma de XML y los envía a través de una solicitud HTTP a un servidor remoto que implementa el protocolo XML-RPC. El servidor remoto que implementa el protocolo XML-RPC recibe la solicitud y luego realiza el método remoto y devuelve el resultado en formato XML.

En este artículo vamos a ver cómo llamar a los métodos en su instalación de WordPress utilizando XML-RPC.


Paso 1 Entendiendo XML-RPC en WordPress

WordPress es una completa plataforma de blogs. Se hace altamente personalizable y abierto para que otros sistemas se conecten y se comuniquen con él. XML-RPC en WordPress ayuda a esta apertura de WordPress al permitir que otros sistemas o software realicen operaciones en la instalación de WordPress, incluso de forma remota. Por lo tanto, el uso de WordPress XML-RPC puede crear clientes de blogs de WordPress, algún otro software que realiza algunas tareas por lotes, como crear múltiples publicaciones desde un archivo, etc..


Paso 2 Habilitando el soporte XML-RPC en tu instalación de WordPress

Por defecto, XML-RPC no está habilitado en su instalación de WordPress. Entonces, para que su instalación de WordPress pueda servir solicitudes XML-RPC, debe habilitar esta función en su sitio web.

Para habilitar esta característica tendrás que ir a la sección de administración. Allí, en Configuración -> Escritura, tendrá que Habilitar la opción XML-RPC como se muestra a continuación.


Paso 3: Conocer los archivos y las clases en WordPress que hacen posible XML-RPC

Todas las solicitudes XML-RPC se envían a la xmlrpc.php Archivo que está presente en su directorio principal de instalación de WordPress. El archivo básicamente hace un arranque para cargar el entorno de WordPress y luego crea un objeto de la clase wp_xmlrpc_server que está presente en la ubicación wp-includes / class-wp-xmlrpc-server.php.

los wp_xmlrpc_server la clase es responsable de manejar todas las solicitudes XML-RPC provenientes de los clientes XML-RPC.


Paso 4: Conocer los diferentes tipos de API compatibles con el servidor de WordPress XML-RPC

El servidor WordPress XML-RPC admite varios tipos en las API para XML-RPC. Los siguientes son los tipos de API que admite el servidor WordPress XML-RPC:

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

Aunque no hay mucha documentación sobre todo esto, un breve vistazo a la wp_xmlrpc_server La clase ayudará a saber el nombre exacto de las API compatibles con el servidor XML-RPC de WordPress.

 function 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_newMedia ', // Alias' wp.getCommentCount '=>' this: wp_getCommentCount ',' wp.getPostStatusList '=>' this: wp_getPostStatusList ',' wp.getPageStatusList '=>' this: wp_getPageStatusList ',' wp. > '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_getMediaItpation '', 'wp.getMediaLibrary' => > 'this: wp_getPostFormats', // API de Blogger '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' => 'this: blogger_setTemplate', 'blogger.newPost' => 'this: blogger_newpost.png ',' blogger.editPost '=>' this: blogger_editPost ',' blogger.deletePost '=>' this: blogger_deletePost ', // API de MetaWeblog (con extensiones de MT en las estructuras)' metaWeblog.newPost '=>' this: mw_newPost ',' metaWeblog.editPost '=>' this: mw _editPost ',' metaWeblog.getPost '=>' this: mw_getPost ',' metaWeblog.getRecentPosts '=>' this: mw_getRecentPosts ',' metaWeblog. esto: mw_newMediaObject ', // alias de la API de MetaWeblog para la API de Blogger // consulte 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.getRecentPostTitles '=>' this: mt_getRecentPostTitles ',' mt.getPostCategories '=>' this: mt_getPostCategories ',' mt.setPas.as.png.as.png.png_asp.png_as.png_es_es_team_as_es_es_es_mocho_as_tam_as_as_es_as_es_as_es_mot_as_es_es_es_es_es_mot.as_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es_es , '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' => ' esto: addTwoNumbers ');

Paso 5 Creando el XMLRPClientWordPress Clase en PHP

Ahora vamos a crear una clase. XMLRPClientWordPress en PHP, que proporcionará funciones para realizar diferentes operaciones en su instalación de WordPress a través de llamadas XML-RPC.

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

Primero, crearemos una clase y tendremos tres miembros para mantener el valor de la URL XML-RPC de la instalación de WordPress y el nombre de usuario y la contraseña de la instalación..

La URL de XML-PRC es http://yourwordpressinstall.com/xmlrpc.php, y el nombre de usuario y la contraseña son el nombre de usuario y la contraseña de un usuario del blog con el acceso adecuado.

Luego, crearemos un constructor para tomar estos valores y almacenarlos en los miembros de la clase de la siguiente manera:.

 // Constructor public function __construct ($ xmlrpcurl, $ username, $ password) $ this-> XMLRPCURL = $ xmlrpcurl; $ this-> UserName = $ username; $ this-> PassWord = $ password; 

Entonces crearemos un Enviar petición función que tomará el nombre de la solicitud y los parámetros de la solicitud como entrada. La función creará una solicitud XML a partir de los parámetros de entrada y luego enviará la solicitud a la URL de instalación de WordPress XML-RPC y devolverá los resultados..

La función es la siguiente:

 función 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); $ resultados = curl_exec ($ ch); curl_close ($ ch); devuelve $ resultados; 

Esta función usa la función PHP xmlrpc_encode_request que crea la solicitud XML y luego usamos curl para enviar la solicitud en la URL XML-RPC de la instalación de WordPress almacenada en la variable miembro de la clase.

Entonces esta función devuelve el resultado que obtiene del servidor XML-RPC.


Paso 6 enviando el primero Di hola Solicitud de XML-RPC para su instalación de WordPress

Para verificar si podemos llamar correctamente a los métodos en el servidor de instalación de WordPress, llamaremos demo.sayHello método, no toma ningún parámetro y, si se ejecuta correctamente, el servidor XML-RPC de WordPress devuelve una cadena "¡Hola!".

La función de llamar demo.sayHello es como sigue:

 función sayHello () $ params = array (); devuelve $ this-> send_request ('demo.sayHello', $ params); 

Básicamente como el demo.sayHello El método no toma ningún parámetro, enviamos una matriz vacía como parámetro y luego llamamos Enviar petición pasando el nombre de la solicitud como demo.sayHello.

Para llamar a esta función necesitarás crear un objeto de clase. XMLRPClientWordPress como sigue:

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

Y luego llamar:

 $ objXMLRPClientWordPress-> sayHello ()

El resultado de esto será el siguiente:

Si obtiene el mismo resultado, significa que puede enviar la solicitud correctamente a su servidor de WordPress XML-RPC y recibir la solicitud correctamente.

Ahora puede realizar una operación un poco más compleja utilizando XML-RPC en su instalación de WordPress.


Paso 7 Creando una publicación de tu blog usando XML-RPC

Ahora vamos a crear una función que creará una publicación en el blog a través de XML-RPC.

El nombre de la solicitud para crear una publicación es metaWeblog.newPost que en realidad es parte de la API de MetaWeblog que admite WordPress.

Los argumentos requeridos para esta solicitud son los

  • blogido (que es 0 si solo tienes un blog en tu instalación)
  • nombre de usuario
  • contraseña
  • Estructura del contenido de la publicación, es decir, información diferente acerca de la publicación como título, contenido, categorías etc.
  • publicar es decir, si publicar la publicación

La función create_post es como sigue:

 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 para permitir comentarios 'mt_allow_pings' => 0, // 1 a permitir trackbacks 'post_type' => 'post', 'mt_keywords' => $ keywords, 'categories' => array ($ category)); $ params = array (0, $ this-> UserName, $ this-> PassWord, $ contenido, verdadero); devolver $ this-> send_request ('metaWeblog.newPost', $ params);

Esta función toma el título, cuerpo, categorías, etc. como argumentos de entrada. Luego crea una estructura de contenido a partir de estos argumentos y establece algunos valores predeterminados..

Luego, crearemos una matriz de parámetros a partir del nombre de usuario, la contraseña pasada previamente en el constructor y de la matriz de contenido que creamos a partir de los parámetros de entrada.

Esta función se puede llamar de la siguiente manera.

 $ objXMLRPClientWordPress-> create_post ('Hello WordPress XML-RPC', 'Este es el contenido de la publicación realizada a través de XML-RPC', ");

El ID de la publicación recién creada es el valor devuelto por esta API. Si creamos una tabla desde la API e imprimimos sus resultados, se verá como sigue:.

Si vamos y vemos la instalación de WordPress, la publicación aparecerá en ella de la siguiente manera


Paso 8 Creando una página tu blog usando XML-RPC

Ahora crearemos una página en la instalación de WordPress utilizando el XML-RPC. La solicitud para crear una página es wp.newPage que es en realidad una parte de la API de WordPress.

Los argumentos para esto son los mismos que para la creación de una solicitud posterior..

Siguiente es el Crear página función:

 function create_page ($ title, $ body, $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ content = array ('title' => $ title, 'description' => $ body); $ params = array (0, $ this-> UserName, $ this-> PassWord, $ content, true); devuelve $ this-> send_request ('wp.newPage', $ params); 

Básicamente, toma el título y el cuerpo como entradas y luego crea los parámetros necesarios para la solicitud, luego envía la solicitud.

Llamaremos a la función como sigue

 $ objXMLRPClientWordPress-> create_page ('Página de WordPress XML-RPC', 'Este es el contenido de la primera página realizada a través de XML-RPC');

Y luego llamar:

 $ objXMLRPClientWordPress-> sayHello ()

La devolución de esta solicitud es el ID de página de la página recién creada. Ahora, si ejecutamos esta función y verificamos nuestra instalación de WordPress, la página recién creada se verá como sigue.


Paso 9: Obtención de la lista de autores de un blog con XML-RPC

Ahora crearemos una función para obtener la lista de autores de su instalación de WordPress a través de XML-RPC. La solicitud para obtener la lista de autores es wp.getAuthors que también es parte de la API de WordPress.

Los parámetros para esta solicitud son los siguientes:

  • blogido (que es 0 si solo tienes un blog en tu instalación)
  • nombre de usuario
  • contraseña

La función display_authors es como sigue:

 función display_authors () $ params = array (0, $ this-> UserName, $ this-> PassWord); devuelve $ this-> send_request ('wp.getAuthors', $ params); 

No toma ningún parámetro, solo usa el nombre de usuario y la contraseña almacenados para enviar la solicitud. El resultado de esta función es una cadena sobre los detalles del autor de todos los autores en el blog..

Podemos llamar a esta función de la siguiente manera:

 $ objXMLRPClientWordPress-> display_authors ();

A continuación se muestra la tabla creada a partir de la solicitud y la respuesta de las diferentes solicitudes en este tutorial..


Paso 10: Conocer algunas otras operaciones importantes compatibles con WordPress XML-RPC

Al igual que las otras solicitudes analizadas, WordPress admite casi todas las operaciones importantes que se pueden realizar en WordPress.

Hay solicitudes soportadas para

  • Creando, editando, borrando páginas y posts.
  • Creación, edición, eliminación de comentarios.
  • Listado de autores y detalles del blog.
  • Para obtener publicaciones recientes y lista de categorías

Y mucho más son compatibles.


Conclusión

El soporte XML-RPC en WordPress le permite a uno escribir otro software o scripts que pueden automatizar tareas en su instalación de WordPress o algún otro software cliente para realizar tareas de forma remota.

Características como XML-RPC ayudan a WordPress a ser una plataforma muy abierta y extensible. Tan feliz blogueando con WordPress!

¿Tiene alguna tarea en particular para la que desee utilizar XML-RPC? ¿Hay algún software específico que le guste usar con WordPress que utilice XML-RPC? Háganos saber en los comentarios a continuación.!