WordPress como cliente XML-RPC?

12

Eu quero sincronizar as edições post em dois sites. Ambiente de teste, não produção. Direção única (site A para o site B, mas não para trás).

Basicamente eu edito post na minha pilha de teste local e a mesma postagem (parte do conjunto de conteúdo de teste) no servidor remoto deve ser atualizada com uma cópia idêntica do conteúdo resultante.

Eu sei que o servidor XML-RPC é implementado no WordPress ... Mas o WordPress em si não é um cliente XML-RPC e não tenho idéia de como seria fácil transformá-lo em um (geralmente sou cauteloso com XML- qualquer coisa:)

Então, devo ir com o XML-RPC e implementar a funcionalidade do cliente ou que não vale a pena e eu deveria criar um formulário personalizado ou algo no servidor remoto para detectar alterações?

    
por Rarst 01.05.2011 / 20:14

1 resposta

13

O WordPress já possui uma classe de cliente XML-RPC implementada. Está no mesmo arquivo que a parte do servidor: class-IXR.php localizado em wp-includes .

O código a seguir gerará uma nova postagem. Você poderia agrupar isso em uma função e anexá-lo ao gancho de ação save_post / update_post . Para sincronizar as duas partes, você pode verificar o post-slug ou enviar o mesmo post-id para o post no 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();
}
    
por rofflox 01.05.2011 / 23:35

Tags