Distributor: ポストメタアソシエーションをサポートするための拡張...

作成日 2020年07月08日  ·  3コメント  ·  ソース: 10up/distributor

やあ、

警告には、ポストメタアソシエーションに関する注記があり、これらは転送で「持ち込まれない」ことを指定しています。 (ACFを使用して)複雑なリレーショナルメタデータを使用してサイトのネットワークを開発しているときに、2つの質問があります。

  • このメモは「プッシュ」転送について言及しています。 「プル」リクエストについても同じことが言えますか?
  • 提案されているプラ​​グインの「ケースバイケース」拡張の利用可能な例はありますか? 私はこれを試してみたいと思いますが、どこから始めればよいのかわかりません!

前もって感謝します!

Reporter Feedback question

最も参考になるコメント

こんにちは@ john-lynch-cp、私たちはこのトピックに関するいくつかの内部の議論を持っていますが、私たちはまだ最終的な方向性を持っていません。

保存されるメタ値は、元のサイトとリモートサイトで異なる関連オブジェクトのIDです。 この問題は、リモートサイトでオブジェクトID(メタ値)を正しいものに置き換えることで解決できます。

  • 投稿の場合:リモート投稿IDを取得するために使用できるdt_connection_mapメタがあります。
  • ユーザーと用語については、slugを使用してリモートサイトで正しい用語を見つけることができます。

dt_push_post_argsdt_subscription_post_argsフックすることで、投稿メタ(投稿IDの変更、用語スラッグの追加、ユーザーログインの追加)を準備できます。

リモートサイトで正しいメタ値を更新するには、 dt_process_distributor_attributesdt_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

この助けを願っています!

全てのコメント3件

こんにちは@ john-lynch-cp、私たちはこのトピックに関するいくつかの内部の議論を持っていますが、私たちはまだ最終的な方向性を持っていません。

保存されるメタ値は、元のサイトとリモートサイトで異なる関連オブジェクトのIDです。 この問題は、リモートサイトでオブジェクトID(メタ値)を正しいものに置き換えることで解決できます。

  • 投稿の場合:リモート投稿IDを取得するために使用できるdt_connection_mapメタがあります。
  • ユーザーと用語については、slugを使用してリモートサイトで正しい用語を見つけることができます。

dt_push_post_argsdt_subscription_post_argsフックすることで、投稿メタ(投稿IDの変更、用語スラッグの追加、ユーザーログインの追加)を準備できます。

リモートサイトで正しいメタ値を更新するには、 dt_process_distributor_attributesdt_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に目を向けていると思います。

このページは役に立ちましたか?
0 / 5 - 0 評価