- סטטוס
- נפתר
- דווח עבור
- WPML Multilingual CMS 3.1.9.5
- נפתר בגרסה
- 3.2
סקירה כללית של התקלה
כאשר לדף אב אחד או יותר יש דפי בן שונים עם אותו מזהה כתובת, פתיחת אחד מדפי הבן מפנה לדף הלא נכון.
נראה כי שימוש חוזר במזהה כתובת בדפי בן גורם להפניה שגויה בצד הלקוח.
דוגמה:
- Page A
- child-aa
- child-ab
- Page 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; } } } - שמור
- טען מחדש את האתר