أهلا،
في التحذيرات ، توجد ملاحظة بخصوص ارتباطات ما بعد التعريف ، تحدد أنه لن يتم "إحضارها" في عمليات النقل. بينما أقوم بتطوير شبكة من المواقع ذات البيانات الوصفية العلائقية المعقدة (باستخدام ACF) ، لدي سؤالان:
شكرا لك مقدما!
مرحبًا @ john-lynch-cp ، لدينا بعض المناقشات الداخلية حول هذا الموضوع ولكن لم يكن لدينا اتجاه نهائي حتى الآن.
قيمة التعريف المحفوظة هي معرف الكائن المرتبط ، والذي يختلف بين الموقع الأصلي والمواقع البعيدة. يمكنك حل هذه المشكلة عن طريق استبدال معرف الكائن (القيمة الوصفية) بالمعرّف الصحيح على الموقع البعيد:
dt_connection_map
meta التي يمكن استخدامها لاسترداد معرف المنشور البعيد.يمكنك تحضير التعريف المنشور (تغيير معرف المنشور ، إضافة سبيكة مصطلح ، إضافة تسجيل دخول المستخدم) عن طريق الربط بـ dt_push_post_args
و dt_subscription_post_args
.
لتحديث قيمة التعريف الصحيحة على الموقع البعيد ، اربط بين dt_process_distributor_attributes
و dt_process_subscription_attributes
.
لأسئلتك:
تشير الملاحظة إلى عمليات نقل "الدفع". هل ينطبق الأمر نفسه على طلبات "السحب"؟
الإجابة المختصرة هي لا ، الدفع والسحب مختلفان. في حين أنه من الممكن تحقيق نفس النتيجة للدفع باستخدام السحب ، ستحتاج إلى بعض الخطوات الإضافية لإعداد ما بعد التعريف. مقابل push
، نظرًا لأنك الموقع الأصلي ، يمكنك إعداد بيانات تعريف إضافية قبل الدفع. لكن لا يمكنك فعل الشيء نفسه مع pull
. يستخدم الموزع نقطة نهاية المشاركات للحصول على بيانات المنشور لـ pull
، انظر هذا .
هل هناك مثال متاح للتمديد "كل حالة على حدة" للملحق المقترح؟ سأكون حريصًا على تجربة هذه المحاولة ولكن لا أعرف من أين أبدأ!
على سبيل المثال ، لديك حقل تصنيف (باستخدام ACF) ، يسمى test_meta
، والذي يرتبط بـ project_category
التصنيف. يرجى ملاحظة أن المثال أدناه مخصص لغرض التعليم فقط ، فهو ليس حلاً مثاليًا.
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://github.com/NovemBit/distributor-acf-addon. لاحظ أن هذا الملحق غير متوافق مع الإصدار الحالي من الموزع.
نأمل أن تكون هذه المساعدة!
@ john-lynch-cp هل الرد أعلاه يحل أسئلتك بحيث يمكننا إغلاق هذه المشكلة أو هل لديك أي أسئلة متابعة؟
شكرًا على المتابعة ، يسعدك إنهاء هذا الآن. أعتقد أننا نتطلع إلى نظام إدارة محتوى مختلف لأن تحدي التوزيع قد يكون أكثر منطقية من خلال نهج مختلف.
التعليق الأكثر فائدة
مرحبًا @ john-lynch-cp ، لدينا بعض المناقشات الداخلية حول هذا الموضوع ولكن لم يكن لدينا اتجاه نهائي حتى الآن.
قيمة التعريف المحفوظة هي معرف الكائن المرتبط ، والذي يختلف بين الموقع الأصلي والمواقع البعيدة. يمكنك حل هذه المشكلة عن طريق استبدال معرف الكائن (القيمة الوصفية) بالمعرّف الصحيح على الموقع البعيد:
dt_connection_map
meta التي يمكن استخدامها لاسترداد معرف المنشور البعيد.يمكنك تحضير التعريف المنشور (تغيير معرف المنشور ، إضافة سبيكة مصطلح ، إضافة تسجيل دخول المستخدم) عن طريق الربط بـ
dt_push_post_args
وdt_subscription_post_args
.لتحديث قيمة التعريف الصحيحة على الموقع البعيد ، اربط بين
dt_process_distributor_attributes
وdt_process_subscription_attributes
.لأسئلتك:
الإجابة المختصرة هي لا ، الدفع والسحب مختلفان. في حين أنه من الممكن تحقيق نفس النتيجة للدفع باستخدام السحب ، ستحتاج إلى بعض الخطوات الإضافية لإعداد ما بعد التعريف. مقابل
push
، نظرًا لأنك الموقع الأصلي ، يمكنك إعداد بيانات تعريف إضافية قبل الدفع. لكن لا يمكنك فعل الشيء نفسه معpull
. يستخدم الموزع نقطة نهاية المشاركات للحصول على بيانات المنشور لـpull
، انظر هذا .على سبيل المثال ، لديك حقل تصنيف (باستخدام ACF) ، يسمى
test_meta
، والذي يرتبط بـproject_category
التصنيف. يرجى ملاحظة أن المثال أدناه مخصص لغرض التعليم فقط ، فهو ليس حلاً مثاليًا.بالمناسبة ، هناك إضافات صنعتها Novembit تشبه المثال أعلاه ولكنها أكثر تعقيدًا: https://github.com/NovemBit/distributor-acf-addon. لاحظ أن هذا الملحق غير متوافق مع الإصدار الحالي من الموزع.
نأمل أن تكون هذه المساعدة!