Distributor: توسيع لدعم اقترانات ما بعد التعريف ...

تم إنشاؤها على ٨ يوليو ٢٠٢٠  ·  3تعليقات  ·  مصدر: 10up/distributor

أهلا،

في التحذيرات ، توجد ملاحظة بخصوص ارتباطات ما بعد التعريف ، تحدد أنه لن يتم "إحضارها" في عمليات النقل. بينما أقوم بتطوير شبكة من المواقع ذات البيانات الوصفية العلائقية المعقدة (باستخدام ACF) ، لدي سؤالان:

  • تشير الملاحظة إلى عمليات نقل "الدفع". هل ينطبق الأمر نفسه على طلبات "السحب"؟
  • هل هناك مثال متاح للتمديد "كل حالة على حدة" للملحق المقترح؟ سأكون حريصًا على تجربة هذه المحاولة ولكن لا أعرف من أين أبدأ!

شكرا لك مقدما!

Reporter Feedback question

التعليق الأكثر فائدة

مرحبًا @ john-lynch-cp ، لدينا بعض المناقشات الداخلية حول هذا الموضوع ولكن لم يكن لدينا اتجاه نهائي حتى الآن.

قيمة التعريف المحفوظة هي معرف الكائن المرتبط ، والذي يختلف بين الموقع الأصلي والمواقع البعيدة. يمكنك حل هذه المشكلة عن طريق استبدال معرف الكائن (القيمة الوصفية) بالمعرّف الصحيح على الموقع البعيد:

  • للنشر: لدينا dt_connection_map meta التي يمكن استخدامها لاسترداد معرف المنشور البعيد.
  • بالنسبة للمستخدم والمصطلح ، يمكنك استخدام slug للعثور على المصطلح الصحيح على الموقع البعيد.

يمكنك تحضير التعريف المنشور (تغيير معرف المنشور ، إضافة سبيكة مصطلح ، إضافة تسجيل دخول المستخدم) عن طريق الربط بـ 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. لاحظ أن هذا الملحق غير متوافق مع الإصدار الحالي من الموزع.

نأمل أن تكون هذه المساعدة!

ال 3 كومينتر

مرحبًا @ john-lynch-cp ، لدينا بعض المناقشات الداخلية حول هذا الموضوع ولكن لم يكن لدينا اتجاه نهائي حتى الآن.

قيمة التعريف المحفوظة هي معرف الكائن المرتبط ، والذي يختلف بين الموقع الأصلي والمواقع البعيدة. يمكنك حل هذه المشكلة عن طريق استبدال معرف الكائن (القيمة الوصفية) بالمعرّف الصحيح على الموقع البعيد:

  • للنشر: لدينا dt_connection_map meta التي يمكن استخدامها لاسترداد معرف المنشور البعيد.
  • بالنسبة للمستخدم والمصطلح ، يمكنك استخدام slug للعثور على المصطلح الصحيح على الموقع البعيد.

يمكنك تحضير التعريف المنشور (تغيير معرف المنشور ، إضافة سبيكة مصطلح ، إضافة تسجيل دخول المستخدم) عن طريق الربط بـ 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 هل الرد أعلاه يحل أسئلتك بحيث يمكننا إغلاق هذه المشكلة أو هل لديك أي أسئلة متابعة؟

شكرًا على المتابعة ، يسعدك إنهاء هذا الآن. أعتقد أننا نتطلع إلى نظام إدارة محتوى مختلف لأن تحدي التوزيع قد يكون أكثر منطقية من خلال نهج مختلف.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات