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:
Terima kasih sebelumnya!
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:
dt_connection_map
yang dapat digunakan untuk mengambil id posting 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.
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:
dt_connection_map
yang dapat digunakan untuk mengambil id posting jarak jauh.Anda dapat menyiapkan meta posting (ubah id posting, tambahkan istilah slug, tambahkan login pengguna) dengan menghubungkan ke
dt_push_post_args
dandt_subscription_post_args
.Untuk memperbarui nilai meta yang benar di situs jarak jauh, kaitkan ke
dt_process_distributor_attributes
dandt_process_subscription_attributes
.Untuk pertanyaan Anda:
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 denganpull
. Distributor menggunakan titik akhir posting untuk mendapatkan data posting untukpull
, lihat ini .Misalnya, Anda memiliki bidang taksonomi (menggunakan ACF), bernama
test_meta
, yang tertaut keproject_category
taksonomi. Harap dicatat bahwa contoh di bawah ini dibuat untuk tujuan pendidikan saja, itu bukan solusi yang optimal.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!