WPML
الحالة
مفتوحة

نظرة عامة على المشكلة

لا تعمل دالة WordPress الأصلية has_category مع المقالات المترجمة.

وفيما يلي مثال على ذلك:

  1. لدينا تصنيف بالمعرّف النصي للرابط باللغة الإنجليزية “test” وترجمته الفرنسية “test-fr”.
  2. هذا التصنيف مُعيّن للمقالات.
  3. عندما تستدعي has_category(”test”) داخل حلقة تكرار في ملف single.php الخاص بقالبك، فإنها تُرجع true للغة الافتراضية ولكن false للترجمة.

حل بديل مؤقت

عرّف مرشحاً جديداً في ملف functions.php الخاص بقالبك:

function wp_has_category ($category) {
$category = get_term_by('name', $category, 'category');
return has_category($category);
}
add_filter('wp_has_category', 'wp_has_category', 10, 1);

استبدل الدالة has_category بهذا المرشح الجديد:
apply_filters( 'wp_has_category', 'test' )

يأخذ هذا المرشح التصنيف المترجم بناءً على اسم التصنيف الأصلي ويتحقق مما إذا كان التصنيف المترجم معيناً لمقالة.

جميع المشاكل المعروفة →