- Trạng thái
- Đã được giải quyết bởi nhà phát triển
- Được báo cáo cho
- WPML SEO 2.0.1
Tổng quan về lỗi
Đây là một vấn đề chung của Yoast SEO (không chỉ riêng với WPML) và đã được báo cáo tại đây.
Nếu bạn đang định dạng URL để hiển thị ngôn ngữ dưới dạng tham số trong WPML → Ngôn ngữ, bạn sẽ nhận thấy rằng các trang bằng ngôn ngữ phụ có phân trang sẽ hiển thị liên kết canonical không chính xác.
Giải pháp tạm thời
Vui lòng tạo bản sao lưu đầy đủ cho trang web của bạn trước khi tiếp tục. Sau đó, thêm mã sau vào tệp giao diện functions.php của bạn:
// define the wpseo_canonical callback
function wpmldp_filter_wpseo_canonical_lang_parameter_position( $canonical ) {
// decode URL
$canonical = urldecode($canonical);
// get current language
$my_current_lang = apply_filters( 'wpml_current_language', NULL );
// define ?lang parameter
$param = '?lang='.$my_current_lang;
// check if current $canonical contains the parameter
if(strpos($canonical, $param) !== false){
// remove the parameter from URL
$canonical = str_replace('/'.$param, "", $canonical);
// add it again
$canonical = $canonical.$param;
}
return $canonical;
};
// add the filter
add_filter( 'wpseo_canonical', 'wpmldp_filter_wpseo_canonical_lang_parameter_position', 999 );
