- الحالة
- محلول
- النوع
- خطأ برمجي
- تم الإبلاغ عنه لـ
- WPML Multilingual CMS 3.3.6
- تم الحل في
- 3.3.7
نظرة عامة على المشكلة
إن استخدام wp_get_archives وتحديد الوسيطة post_type من أجل تصفية عرض المقالات لصفحة الأرشيف الخاصة بنوع منشور مخصص معيّن، لا يعمل.
يُرجى ملاحظة أن هذه المشكلة ظهرت مع إصدار WordPress 4.4.
مثال:
لنفترض أن لديك نوع منشور مخصص بالمعرّف النصي للرابط “news”، وأنشأت قالب أرشيف مخصص لنوع المنشور المخصص هذا في قالب (archive-news.php).
في ذلك الملف، يمكنك استخدام الكود التالي لعرض الأرشيف:
$my_archives=wp_get_archives(array( 'type'=>'alpha', 'show_post_count'=>true, 'limit'=>20, 'post_type'=>'news', 'format'=>'html' )); print_r($my_archives);
حالياً، لن يعمل هذا الكود ولن تُعرض أي مقالات.
حل بديل مؤقت
قبل اتخاذ أي من الخطوات التالية، يُرجى التأكد من فهمك أنك تقوم بتعديل الملفات في موقعك، وأن هذا الأمر قد يتسبب في توقف موقعك الإلكتروني عن العمل إذا لم يتم بشكل صحيح.
نوصي بشدة بتجربة ذلك في بيئة آمنة أولاً، أو على الأقل إجراء نسخة احتياطية كاملة لموقعك الإلكتروني قبل المتابعة.
- افتح الملف
sitepress-multilingual-cms\sitepress.class.php - اذهب إلى السطر 219
- استبدل:
add_filter( 'getarchives_join', array( $this, 'getarchives_join' ) );
- بـ:
add_filter( 'getarchives_join', array( $this, 'getarchives_join' ), 10, 2 );
- استبدل:
- اذهب إلى السطر 3685
- استبدل:
function getarchives_join( $join ) { return $join . " JOIN {$this->wpdb->prefix}icl_translations t ON t.element_id = {$this->wpdb->posts}.ID AND t.element_type='post_post'"; } - بـ:
function getarchives_join( $join, $args ) { $post_type = array_key_exists( 'post_type', $args ) ? $args['post_type'] : 'post'; $post_type = esc_sql( $post_type ); return $join . " JOIN {$this->wpdb->prefix}icl_translations t ON t.element_id = {$this->wpdb->posts}.ID AND t.element_type='post_" . $post_type . "'"; }
- استبدل: