- Trạng thái
- Đã giải quyết
- Được báo cáo cho
- WPML Multilingual CMS 3.1.9.5
- Đã giải quyết trong
- 3.2
Tổng quan về lỗi
Khi một hoặc nhiều trang cha có các trang con khác nhau với cùng slug, việc mở một trong các trang con sẽ chuyển hướng đến sai trang.
Việc sử dụng lại một slug trong các trang con dường như gây ra tình trạng chuyển hướng sai trên giao diện người dùng.
Ví dụ:
- Trang A
- child-aa
- child-ab
- Trang B
- child-aa (trang riêng biệt, nhưng có cùng slug với 1.1)
- child-bb
Giải pháp tạm thời
Sự cố này sẽ được khắc phục trong WPML 3.2.
Trong khi chờ đợi, bạn có thể sử dụng giải pháp tạm thời sau.
Xin lưu ý rằng điều này chỉ hoạt động với các slug con bị trùng lặp, miễn là các trang cha không sử dụng cùng tên với các trang con.
- Tạo một bản sao lưu đầy đủ cho trang web của bạn. Nếu có thể, hãy thử trước trên một bản sao không phải môi trường thực tế của trang web.
- Mở
sitepress.class.php - Đi đến dòng 7804: dòng này chỉ nên chứa
// Adjust page name - Thay thế khối mã này (từ dòng 7804 đến 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; } } }
Bằng khối sau:// 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; } } } - Lưu
- Tải lại trang web