- Trạng thái
- Đang chờ nhà phát triển
- Plugin/giao diện liên quan
- Dokan
- Thẻ chủ đề
- Compatibility
Tổng quan về lỗi
Khi sử dụng Dokan với WPML được cấu hình ở chế độ Một tên miền khác nhau cho mỗi ngôn ngữ, bộ chuyển đổi ngôn ngữ có thể tạo ra các URL không hợp lệ chứa tiền tố tên miền thừa. Ví dụ, việc chuyển sang tiếng Pháp có thể dẫn đến một URL như “https://domain.com/fr/https://domain.fr/” thay vì URL chính xác là “https://domain.fr”.
Giải pháp tạm thời
Vui lòng đảm bảo bạn có một bản sao lưu toàn bộ trang web trước khi tiếp tục.
- Mở tệp …/wp-content/plugins/dokan-wpml/dokan-wpml.php.
- Tìm dòng 1871.
- Thay thế:
public function filter_language_switcher_url( $url, $lang ) { $lang_code = $lang['code'] ?? ''; if ( empty( $url ) || empty( $lang_code ) ) { return $url; } // Get home URL without WPML modifications. $this->disable_url_translation(); $home_url = home_url(); $this->enable_url_translation(); $default_language_code = wpml_get_default_language(); $language_negotiation_type = (int) apply_filters( 'wpml_setting', 1, 'language_negotiation_type' ); $is_parameter_based = ( WPML_LANGUAGE_NEGOTIATION_TYPE_PARAMETER === $language_negotiation_type ); if ( ! $is_parameter_based && $default_language_code !== $lang_code ) { $base_url = trailingslashit( $home_url ) . $lang_code; } else { $base_url = $home_url; }
- Bằng:
public function filter_language_switcher_url( $url, $lang ) { $lang_code = $lang['code'] ?? ''; if ( empty( $url ) || empty( $lang_code ) ) { return $url; } $language_negotiation_type = (int) apply_filters( 'wpml_setting', 1, 'language_negotiation_type' ); if ( WPML_LANGUAGE_NEGOTIATION_TYPE_DOMAIN === $language_negotiation_type ) { return $url; } $this->disable_url_translation(); $home_url = home_url(); $this->enable_url_translation(); $default_language_code = wpml_get_default_language(); $is_parameter_based = ( WPML_LANGUAGE_NEGOTIATION_TYPE_PARAMETER === $language_negotiation_type ); if ( ! $is_parameter_based && $default_language_code !== $lang_code ) { $base_url = trailingslashit( $home_url ) . $lang_code; } else { $base_url = $home_url; }
- Lưu tệp và xóa cache trang web của bạn