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.
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..
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.
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.
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:
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 ');
XMLRPClientWordPress
Clase en PHPAhora 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.
Di hola
Solicitud de XML-RPC para su instalación de WordPressPara 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.
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
título
, contenido
, categorías
etc.publicar
es decir, si publicar la publicaciónLa 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
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.
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..
Al igual que las otras solicitudes analizadas, WordPress admite casi todas las operaciones importantes que se pueden realizar en WordPress.
Hay solicitudes soportadas para
Y mucho más son compatibles.
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.!