やあ、
警告には、ポストメタアソシエーションに関する注記があり、これらは転送で「持ち込まれない」ことを指定しています。 (ACFを使用して)複雑なリレーショナルメタデータを使用してサイトのネットワークを開発しているときに、2つの質問があります。
前もって感謝します!
こんにちは@ john-lynch-cp、私たちはこのトピックに関するいくつかの内部の議論を持っていますが、私たちはまだ最終的な方向性を持っていません。
保存されるメタ値は、元のサイトとリモートサイトで異なる関連オブジェクトのIDです。 この問題は、リモートサイトでオブジェクトID(メタ値)を正しいものに置き換えることで解決できます。
dt_connection_map
メタがあります。dt_push_post_args
とdt_subscription_post_args
フックすることで、投稿メタ(投稿IDの変更、用語スラッグの追加、ユーザーログインの追加)を準備できます。
リモートサイトで正しいメタ値を更新するには、 dt_process_distributor_attributes
とdt_process_subscription_attributes
にフックします。
あなたの質問のために:
このメモは「プッシュ」転送について言及しています。 「プル」リクエストについても同じことが言えますか?
簡単な答えはノーです。プッシュとプルは異なります。 プルを使用してプッシュと同じ結果を達成することは可能ですが、ポストメタを準備するためにいくつかの追加の手順が必要になります。 push
場合、元のサイトであるため、プッシュする前に追加のメタデータを準備できます。 しかし、 pull
同じことをすることはできません。 ディストリビューターは投稿エンドポイントを使用してpull
の投稿データを取得します。これを参照してください。
提案されているプラグインの「ケースバイケース」拡張の利用可能な例はありますか? 私はこれを試してみたいと思いますが、どこから始めればよいのかわかりません!
たとえば、 project_category
タクソノミーにリンクするtest_meta
という名前のタクソノミーフィールド(ACFを使用)があります。 以下の例は教育目的でのみ作成されたものであり、最適なソリューションではないことに注意してください。
add_action( 'dt_push_post_args', 'prepare_meta', 10, 2 );
function prepare_meta( $post_body, $post ) {
$term_id = get_post_meta( $post->ID, 'test_meta', true );
if( $term_id ) {
$term = get_term_by( 'id', $term_id, 'project_category');
$post_body['project_category_slug'] = $term->slug;
}
return $post_body;
}
add_action( 'dt_process_distributor_attributes', 'set_meta', 10, 2 );
function set_meta( $post, $request ) {
$term = get_term_by( 'slug', $request['project_category_slug'], 'project_category' );
if ( ! $term ) {
return;
}
update_post_meta( $post->ID, 'test_meta', $term->term_id );
}
ところで、上記の例に似ていますが、より複雑なNovembitによって作成されたアドオンがあります: https :
この助けを願っています!
@ john-lynch-cp上記の回答は、この問題を解決できるように質問を解決しますか、それともフォローアップの質問がありますか?
フォローアップしていただきありがとうございます。今すぐ終了させていただきます。 配布の課題は別のアプローチでより理にかなっている可能性があるため、私たちは別のCMSに目を向けていると思います。
最も参考になるコメント
こんにちは@ john-lynch-cp、私たちはこのトピックに関するいくつかの内部の議論を持っていますが、私たちはまだ最終的な方向性を持っていません。
保存されるメタ値は、元のサイトとリモートサイトで異なる関連オブジェクトのIDです。 この問題は、リモートサイトでオブジェクトID(メタ値)を正しいものに置き換えることで解決できます。
dt_connection_map
メタがあります。dt_push_post_args
とdt_subscription_post_args
フックすることで、投稿メタ(投稿IDの変更、用語スラッグの追加、ユーザーログインの追加)を準備できます。リモートサイトで正しいメタ値を更新するには、
dt_process_distributor_attributes
とdt_process_subscription_attributes
にフックします。あなたの質問のために:
簡単な答えはノーです。プッシュとプルは異なります。 プルを使用してプッシュと同じ結果を達成することは可能ですが、ポストメタを準備するためにいくつかの追加の手順が必要になります。
push
場合、元のサイトであるため、プッシュする前に追加のメタデータを準備できます。 しかし、pull
同じことをすることはできません。 ディストリビューターは投稿エンドポイントを使用してpull
の投稿データを取得します。これを参照してください。たとえば、
project_category
タクソノミーにリンクするtest_meta
という名前のタクソノミーフィールド(ACFを使用)があります。 以下の例は教育目的でのみ作成されたものであり、最適なソリューションではないことに注意してください。ところで、上記の例に似ていますが、より複雑なNovembitによって作成されたアドオンがあります: https :
この助けを願っています!