web-dev-qa-db-ja.com

XML-RPCクライアントとしてのWordPress?

2つのサイトで投稿編集を同期したいです。実稼働環境ではなくテスト環境単一方向(サイトAからサイトBへの逆方向ではない).

基本的に私は自分のローカルテストスタックで投稿を編集し、リモートサーバーの同じ投稿(テストコンテンツセットの一部)は結果のコンテンツの同一コピーで更新されるべきです。

私はXML-RPCサーバーがWordPressで実装されていることを知っています...しかしWordPress自体はXML-RPCクライアントではなく、それを1つにするのがどれほど簡単かはわかりません

XML-RPCを使用してクライアント機能を実装する必要がありますか、それとも時間の価値がないので、変更をキャッチするためにリモートサーバーでカスタムフォームなどを作成する必要がありますか。

12
Rarst

WordPressにはすでにXML-RPCクライアントクラスが実装されています。これはサーバー部分と同じファイルにあります:class-IXR.phpにあるwp-includes

次のコードは新しい投稿を生成します。これを関数でラップしてsave_post/update_postアクションフックに添付することができます。両方の部分を同期させるには、ポストスラッグをチェックするか、同じポストIDを2番目のブログのポストに送信します。

$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();
}
13
rofflox