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


13

2つのサイトで投稿の編集を同期したい。本番環境ではなくテスト環境。単一方向(サイトAからサイトB、ただし逆方向)。

基本的に、ローカルテストスタックで投稿を編集し、リモートサーバーで同じ投稿(テストコンテンツセットの一部)を結果のコンテンツの同一コピーで更新する必要があります。

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

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


fetch_feedとSimple Pieを使用すると、実装が簡単になる場合があります。
Chris_O

@Chris_O hmmm ...しかし、(1)サイト上のすべての投稿を含むフィードを生成する必要があります(2)毎回そのフィードのすべての投稿をスキャンして変更を確認する必要があります。(編集)基本的にこれはプル状況です(BはAからプルします)。プッシュが必要だと思います(AがBにプッシュします)
-Rarst

新しい投稿をキャッチするためには機能しますが、変更のチェックにはあまり効率的ではありません。
Chris_O

@Chris_O反対に、新しい投稿を編集するという条件はありません。廃止されたテストデータを変更する必要がある場合は、戻って古い投稿を編集できます。
ラースト

回答:


13

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

次のコードは新しい投稿を生成します。これを関数でラップし、save_post/ update_postアクションフックにアタッチできます。両方の部分を同期するには、post-slugを確認するか、2番目のブログの投稿に同じpost-idを送信します。

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

ありがとう、私はそれが実際にクライアントを持っているとは思いもしなかったし、クイックコーデックス検索はそれを見逃した。
11年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.