WPML
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

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