- الحالة
- محلولة
- أُبلغ عنها لـ
- WPML Multilingual CMS 3.1.9.5
- تم حلها في
- 3.2
نظرة عامة على المشكلة
عندما تحتوي صفحة أب واحدة أو أكثر على صفحات فرعية مختلفة بنفس المعرّف النصي للرابط، فإن فتح إحدى الصفحات الفرعية يؤدي إلى إعادة التوجيه إلى الصفحة الخطأ.
يبدو أن إعادة استخدام المعرّف النصي للرابط في الصفحات الفرعية يتسبب في إعادة توجيه خاطئة في الواجهة الأمامية.
مثال:
- الصفحة A
- child-aa
- child-ab
- الصفحة B
- child-aa (صفحة فريدة، ولكن بنفس المعرّف النصي للرابط كما في 1.1)
- child-bb
حل بديل مؤقت
سيتم إصلاح هذه المشكلة في WPML 3.2.
في غضون ذلك، يمكنك استخدام الحل البديل المؤقت التالي.
يُرجى ملاحظة أن هذا لا يعمل إلا مع المعرّفات النصية للروابط الفرعية المكررة، طالما أن الصفحات الأصلية لا تستخدم نفس اسم الصفحات الفرعية.
- أنشئ نسخة احتياطية كاملة لموقعك. إن أمكن، جرّب هذا أولاً في نسخة غير مخصصة للإنتاج من موقعك.
- افتح
sitepress.class.php - اذهب إلى السطر 7804: يجب أن يحتوي فقط على
// Adjust page name - استبدل كتلة الكود هذه (من السطر 7804 إلى 7828:
// Adjust page name if ( isset( $q->query_vars[ 'pagename' ] ) && !empty( $q->query_vars[ 'pagename' ] ) ) { // find the page with the page name in the current language. $pagename = explode ( '/', $q->query_vars[ 'pagename' ] ); $pagename = array_pop ( $pagename ); $pid = $wpdb->get_var( $wpdb->prepare( " SELECT ID FROM $wpdb->posts p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type='post_page' WHERE p.post_name=%s AND t.language_code = %s ", $pagename, $current_language ) ); if ( $pid ) { $q->query_vars[ 'page_id' ] = $pid; // We have found the page id unset( $q->query_vars[ 'pagename' ] ); if ( $q->query_vars[ 'page_id' ] == get_option( 'page_for_posts' ) ) { // it's the blog page. $q->is_page = false; // $wp_query->is_page = false; $q->is_home = true; // $wp_query->is_home = true; $q->is_posts_page = true; // $wp_query->is_posts_page = true; } } }
بهذه الكتلة:// Adjust page name if ( isset( $q->query_vars[ 'pagename' ] ) && !empty( $q->query_vars[ 'pagename' ] ) ) { // find the page with the page name in the current language. $pid = $wpdb->get_var( $wpdb->prepare( " SELECT ID FROM $wpdb->posts p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND element_type='post_page' WHERE p.post_name=%s AND t.language_code = %s ", $q->query_vars[ 'pagename' ], $current_language ) ); if ( $pid ) { $q->query_vars[ 'page_id' ] = $pid; // We have found the page id unset( $q->query_vars[ 'pagename' ] ); if ( $q->query_vars[ 'page_id' ] == get_option( 'page_for_posts' ) ) { // it's the blog page. $q->is_page = false; // $wp_query->is_page = false; $q->is_home = true; // $wp_query->is_home = true; $q->is_posts_page = true; // $wp_query->is_posts_page = true; } } } - احفظ
- أعد تحميل الموقع