¿WordPress como cliente XML-RPC?

12

Quiero sincronizar las ediciones posteriores en dos sitios. Entorno de prueba, no producción. Dirección única (sitio A al sitio B, pero no hacia atrás).

Básicamente, edito la publicación en mi pila de prueba local y la misma publicación (parte del conjunto de contenido de prueba) en el servidor remoto debería actualizarse con una copia idéntica del contenido resultante.

Sé que el servidor XML-RPC está implementado en WordPress ... Pero WordPress en sí no es un cliente XML-RPC y no tengo idea de lo fácil que sería convertirlo en uno (generalmente desconfío de XML) cualquier cosa :)

¿Entonces debo ir con XML-RPC e implementar la funcionalidad del cliente o no vale la pena y debo crear un formulario personalizado o algo en el servidor remoto para detectar cambios?

    
pregunta Rarst 01.05.2011 - 20:14

1 respuesta

13

WordPress ya tiene implementada una clase de cliente XML-RPC. Está en el mismo archivo que la parte del servidor: class-IXR.php ubicado en wp-includes .

El siguiente código generará una nueva publicación. Podría envolver esto en una función y adjuntarlo al gancho de acción save_post / update_post . Para sincronizar ambas partes, puedes buscar el post-slug o enviar el mismo post-id al post en el segundo blog.

$rpc = new IXR_Client('http://second-blog-domain.tld/path/to/wp/xmlrpc.php');

$post = array(
    'title' => 'Post Title',
    'categories' => array('Category A', 'Category B'),
    'mt_keywords' => 'tagA, tagB, tagC',
    'description' => 'Post Content',
    'wp_slug' => 'post-slug'
);

$params = array(
    0,
    'username',
    'password',
    $post,
    'publish'
);

$status = $rpc->query(
    'metaWeblog.newPost',
    $params
);

if(!$status) {
    echo 'Error [' . $rpc->getErrorCode() . ']: ' . $rpc->getErrorMessage();
    exit();
}
    
respondido por el rofflox 01.05.2011 - 23:35

Lea otras preguntas en las etiquetas