WPML
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ụ:

  1. Trang A

    1. child-aa
    2. child-ab

  2. Trang B

    1. child-aa (trang riêng biệt, nhưng có cùng slug với 1.1)
    2. 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.


  1. 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.

  2. Mở sitepress.class.php

  3. Đi đến dòng 7804: dòng này chỉ nên chứa // Adjust page name

  4. 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;
    		}
    	}
    }
    

  5. Lưu

  6. Tải lại trang web

Tất cả các lỗi đã ghi nhận →