web-dev-qa-db-ja.com

あるWordPressサイトから別のサイトへの投稿の同期

私は以下を達成したい -

私は2つのWordPressサイトを異なるサーバーでホストしています。 Aを送信者サイト、Bを受信者サイトとしましょう。 Aの投稿を追加/更新/削除すると、Bの場合と同じように反映されます。投稿データだけでなく分類法やカスタムフィールドもBで正しく更新されるはずです。

私はWordPress REST AP​​Iをチェックしましたが、Bからプルリクエストを送ることができるJSONフィードをAに保持しているだけなので、私はそれを好みません。また、今日10個のブログがある場合、明日は100個のブログがあるとします。それで、私の理解によれば、それは私の要求には最適ではありません。

私がおそらくやりたいと思うもう一つのアプローチはリモートリクエストをBに送信するためにAに機能を追加することであり、そしてBはエンドポイントを用意するべきです。

例えば。私がBサイトでエンドポイントを作成するならば、「update_post」と言って、フックからAからそれに要求を送ります。投稿を保存するアクションと同様に、Bで利用可能な 'update_post'エンドポイントにリクエストを送信すると、BはAから受信した投稿データで投稿を作成します。投稿のIDはBとAで異なります。 Aで取得したIDをBで作成した投稿の投稿メタに保存し、この関係に基づいて、将来の更新、削除などのアクティビティを処理します。更新時に、私はpostmeta、カテゴリ/タグ、注目の画像の更新にも気をつけなければなりません。

私が今欲しいのはエンドポイントを作成することです -

http://example.com/insert_post のようなエンドポイントを作成する場合は、WordPressの機能が利用できない外部PHPファイルを作成する必要があり、WordPressをロードするためにwp-load.phpを使用すると思います良い考えではありません。だから、私はWordPressの方法でのみこれを達成したいです。

私は研究してこの機能を見つけました http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint 。私はそれに関する記事もたくさん持っていましたが、すべての場所で、jsonフォーマットで投稿、ページ、コメントなどのエンドポイントを作成できると彼らは言っています。私は自分のシナリオでそれがどのように役立つのか、またどのように役立つのかわかりません。私はこれが欲しい -

  1. カスタムエンドポイントを作成する
  2. WordPressの機能を適切に利用できるようにする

任意の助けは大歓迎です。前もって感謝します !!!

3
user_007

Codex.wordpress.org/XML-RPC_Supportを試しましたか。

このコードは、 incutio にあるIXRライブラリと連携して機能します。

include('IXR_Library.php');

$usr = 'theusername';
$pwd = 'thepassword';
$xmlrpc = 'http://not-therealurl.com/xmlrpc.php';
$client = new IXR_Client($xmlrpc);

$client -> debug = true; //optional but useful

$params = array(
    'post_type' => 'post',
    'post_status' => 'draft',
    'post_title' => 'Test Post',
    'post_author' => 4,
    'post_excerpt' => 'This is my test excerpt',
    'post_content' => 'This is my test post. Now its longer than the excerpt.'
);

$res = $client -> query('wp.newPost',1, $usr, $pwd, $params); 
2
james may