Distributor: Memperluas untuk mendukung asosiasi meta pos...

Dibuat pada 8 Jul 2020  ·  3Komentar  ·  Sumber: 10up/distributor

Hai,

Dalam peringatan, ada catatan tentang asosiasi meta pos, yang menetapkan bahwa ini tidak akan "dibawa" dalam transfer. Saat saya mengembangkan jaringan situs dengan metadata relasional yang kompleks (menggunakan ACF), saya memiliki dua pertanyaan:

  • Catatan tersebut merujuk pada transfer "push". Apakah hal yang sama berlaku untuk permintaan "tarik"?
  • Apakah ada contoh ekstensi "kasus per kasus" dari plugin yang disarankan? Saya ingin mencoba ini tetapi tidak tahu harus mulai dari mana!

Terima kasih sebelumnya!

Reporter Feedback question

Komentar yang paling membantu

Hai @john-lynch-cp, kami memiliki beberapa diskusi internal tentang topik ini tetapi kami belum memiliki arahan akhir.

Nilai meta yang disimpan adalah ID objek terkait, yang berbeda antara situs asli dan situs jarak jauh. Anda dapat mengatasi masalah ini dengan mengganti ID objek (nilai meta) dengan yang benar di situs jarak jauh:

  • Untuk posting: kami memiliki meta dt_connection_map yang dapat digunakan untuk mengambil id posting jarak jauh.
  • Untuk pengguna dan istilah, Anda dapat menggunakan slug untuk menemukan istilah yang benar di situs jarak jauh.

Anda dapat menyiapkan meta posting (ubah id posting, tambahkan istilah slug, tambahkan login pengguna) dengan menghubungkan ke dt_push_post_args dan dt_subscription_post_args .

Untuk memperbarui nilai meta yang benar di situs jarak jauh, kaitkan ke dt_process_distributor_attributes dan dt_process_subscription_attributes .

Untuk pertanyaan Anda:

Catatan tersebut merujuk pada transfer "push". Apakah hal yang sama berlaku untuk permintaan "tarik"?

Jawaban singkatnya adalah tidak, push dan pull itu berbeda. Meskipun dimungkinkan untuk mencapai hasil yang sama dari push menggunakan pull, Anda memerlukan beberapa langkah tambahan untuk menyiapkan meta pos. Untuk push , karena Anda adalah situs asli, Anda dapat menyiapkan data meta tambahan sebelum mendorong. Tetapi Anda tidak dapat melakukan hal yang sama dengan pull . Distributor menggunakan titik akhir posting untuk mendapatkan data posting untuk pull , lihat ini .

Apakah ada contoh ekstensi "kasus per kasus" dari plugin yang disarankan? Saya ingin mencoba ini tetapi tidak tahu harus mulai dari mana!

Misalnya, Anda memiliki bidang taksonomi (menggunakan ACF), bernama test_meta , yang tertaut ke project_category taksonomi. Harap dicatat bahwa contoh di bawah ini dibuat untuk tujuan pendidikan saja, itu bukan solusi yang optimal.

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

Btw, ada addons buatan Novembit yang mirip dengan contoh di atas tapi lebih rumit: https://github.com/NovemBit/distributor-acf-addon. Perhatikan bahwa addon ini tidak kompatibel dengan versi Distributor saat ini.

Semoga ini membantu!

Semua 3 komentar

Hai @john-lynch-cp, kami memiliki beberapa diskusi internal tentang topik ini tetapi kami belum memiliki arahan akhir.

Nilai meta yang disimpan adalah ID objek terkait, yang berbeda antara situs asli dan situs jarak jauh. Anda dapat mengatasi masalah ini dengan mengganti ID objek (nilai meta) dengan yang benar di situs jarak jauh:

  • Untuk posting: kami memiliki meta dt_connection_map yang dapat digunakan untuk mengambil id posting jarak jauh.
  • Untuk pengguna dan istilah, Anda dapat menggunakan slug untuk menemukan istilah yang benar di situs jarak jauh.

Anda dapat menyiapkan meta posting (ubah id posting, tambahkan istilah slug, tambahkan login pengguna) dengan menghubungkan ke dt_push_post_args dan dt_subscription_post_args .

Untuk memperbarui nilai meta yang benar di situs jarak jauh, kaitkan ke dt_process_distributor_attributes dan dt_process_subscription_attributes .

Untuk pertanyaan Anda:

Catatan tersebut merujuk pada transfer "push". Apakah hal yang sama berlaku untuk permintaan "tarik"?

Jawaban singkatnya adalah tidak, push dan pull itu berbeda. Meskipun dimungkinkan untuk mencapai hasil yang sama dari push menggunakan pull, Anda memerlukan beberapa langkah tambahan untuk menyiapkan meta pos. Untuk push , karena Anda adalah situs asli, Anda dapat menyiapkan data meta tambahan sebelum mendorong. Tetapi Anda tidak dapat melakukan hal yang sama dengan pull . Distributor menggunakan titik akhir posting untuk mendapatkan data posting untuk pull , lihat ini .

Apakah ada contoh ekstensi "kasus per kasus" dari plugin yang disarankan? Saya ingin mencoba ini tetapi tidak tahu harus mulai dari mana!

Misalnya, Anda memiliki bidang taksonomi (menggunakan ACF), bernama test_meta , yang tertaut ke project_category taksonomi. Harap dicatat bahwa contoh di bawah ini dibuat untuk tujuan pendidikan saja, itu bukan solusi yang optimal.

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

Btw, ada addons buatan Novembit yang mirip dengan contoh di atas tapi lebih rumit: https://github.com/NovemBit/distributor-acf-addon. Perhatikan bahwa addon ini tidak kompatibel dengan versi Distributor saat ini.

Semoga ini membantu!

@john-lynch-cp apakah respons di atas menyelesaikan pertanyaan Anda sehingga kami dapat menyelesaikan masalah ini atau apakah Anda memiliki pertanyaan lanjutan?

Terima kasih atas tindak lanjutnya, senang Anda menutup ini sekarang. Saya pikir kami sedang mencari CMS yang berbeda karena tantangan distribusi mungkin lebih masuk akal dengan pendekatan yang berbeda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat