تحديد فئة الموضوع تلقائيًا بناءً على فئة المنشور؟

لقد قمت عن قصد بإنشاء نفس الفئات تمامًا في كل من WordPress و Discourse، ولكن لا يوجد خيار لتعيين فئة المنشور كفئة للموضوع، لذلك يتعين عليّ تعيينها يدويًا بعد كل مرة أنشر فيها.

يبدو أنها ميزة واضحة، لذا ربما أغفل شيئًا ما؟

أنا أستخدم إضافة WP Discourse.

إعجاب واحد (1)

يمكنك القيام بذلك باستخدام فلتر wpdc_publish_post_category. سيكون شيئًا مثل (مثال برمجي غير مختبر، ولكنه قد يعمل مباشرة):

function wpdc_change_post_category( $category, $post_id ) {
  $wp_category_name = get_the_category( $post_id )[0]->name
  $discourse_categories = WPDiscourse\Utilities\Utilities::get_discourse_categories();
  $discourse_category = array_search( $wp_category_name, array_column( $discourse_categories, 'name' ));
  return $discourse_category['id'];
}
add_filter( 'wpdc_publish_post_category', 'wpdc_change_post_category' );

بعد ذلك، بغض النظر عن الفئة التي اخترتها، سيتم نشر المنشور دائمًا في فئة باسم مطابق لاسم فئة منشور ووردبريس. تأكد من تطابق هذه الأسماء تمامًا وإلا فلن تعمل.

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

إعجاب واحد (1)

شكرا!

يمكنك القيام بذلك باستخدام فلتر wpdc_change_post_category. سيكون شيئًا مثل (مثال برمجي لم يتم اختباره، ولكنه قد يعمل مباشرة):

أعتقد أنك تقصد wpdc_publish_post_category؟ يبدو أن wpdc_change_post_category غير موجود بالفعل. إنه مجرد اسم دالة مخصصة يمكن أن يكون أي شيء، صحيح؟

$wp_category_name = get_the_category( $post_id )[0]->name يفتقد علامة الفاصلة المنقوطة ; الختامية.

بعد ذلك، أحصل على خطأ too few arguments بخصوص function wpdc_change_post_category( $category, $post_id ) {. قد يكون ذلك لأن $category غير معرف؟ قد أختبر المزيد لاحقًا.

فيما يتعلق بإضافة هذا كميزة رسمية، لا أعتقد أنه سيكون مشكلة كبيرة، مع الأخذ في الاعتبار خيارين:

  1. خيار Force Category Update موجود بالفعل. يمكن توسيع هذا ليشمل ميزة تجبر فئات Discourse/WordPress على التزامن دائمًا.

أو

  1. ربما لا يحتاجون إلى التزامن على الإطلاق، بل إذا كانت الفئة غير موجودة في Discourse، فسيتم إنشاؤها ببساطة.
إعجابَين (2)

نعم هذا صحيح، أعتذر عن الخطأ المطبعي.

هناك فرق كبير بين قراءة قائمة الفئات عبر واجهة برمجة التطبيقات (فرض تحديث الفئة) والمزامنة التلقائية للفئات نفسها بين Wordpress و Discourse.

إعجاب واحد (1)

هل سيعمل رمز مشابه لتعيين wp_categories على discourse_tags؟

أنا أعيش حياة “الفئات هي جدران” :sunglasses:

للأسف لا يوجد مرشح مكافئ wpdc_publish_post_tags في الوقت الحالي.

ما الذي تحاول تحقيقه بالضبط باستخدام العلامات؟

لدي نوع منشور مخصص policies مع تصنيف مخصص هرمي policy_categories على مستويين (أصل/فرع). هناك حوالي 45 فئة فرعية.

لقد قمت بإعداد WP Discourse لنشرها في فئة Discourse policies، ولكن بدلاً من إنشاء مجموعة كبيرة من الفئات الفرعية (بعد قراءة هذا المنتدى) يبدو أنه من الأفضل إنشاء الفئات الفرعية كعلامات.

سيكون لدي مستخدمو ووردبريس مختلفون ينشرون policies بمستويات خبرة مختلفة (لو كنت أنا فقط من يقوم بذلك لكانت سأضع علامات عليها في كل مرة). لذلك لتوفير خطوة إضافية وربما قدر كبير من مشكلات الدعم، من الأفضل أن يكون هناك فلتر لجعل WP Discourse يأخذ فئات ووردبريس ويضيف علامات Discourse المطابقة.

سأكون سعيدًا للتأكد من أن الفئات والعلامات تتطابق مع المعرفات/الأسماء المستعارة وما إلى ذلك، حيث سأحتفظ بأي تحديثات لهذه الأمور كمسؤول.

شكراً لمساعدتك في هذا.

ربما هذا شيء لـ #marketplace؟

بينما لا يوجد فلتر علامات مخصص، هناك فلتر عام يمكنك استخدامه: wpdc_publish_body. في حالتك سيبدو كالتالي:

add_filter(  'wpdc_publish_body', function( $body, $remote_post_type, $post_id ) {
   // code to get the post policy category
   if ( // if there is a post policy ) {
      $policy_tags = // map the post policy category to the appropriate tag(s)
      $body['tags'] = $policy_tags
   }
   return $body;
}, 10, 3);