WPML
สถานะ
เปิด
รายงานสำหรับ
WPML Multilingual & Multicurrency for WooCommerce 5.3.2
แท็กหัวข้อ
Bug, WCML

ภาพรวมของปัญหา

เมื่อใช้ WPML Multilingual & Multicurrency for WooCommerce การตั้งค่าหน้า my-account ให้เป็นหน้าย่อยของหน้า shop อาจทำให้เกิดข้อผิดพลาด 404 เมื่อเข้าถึงเอ็นพอยต์บัญชีของฉัน (เช่น คำสั่งซื้อ ดาวน์โหลด เป็นต้น) ในภาษารอง ปัญหานี้มักเกิดขึ้นกับการตั้งค่าลิงก์ถาวร เช่น ฐานของร้านค้าพร้อมหมวดหมู่ หรือ ฐานของร้านค้า

วิธีแก้ปัญหาชั่วคราว

โปรดตรวจสอบให้แน่ใจว่าคุณได้สำรองข้อมูลแบบเต็มสำหรับไซต์ของคุณก่อนดำเนินการต่อ


  • เปิดไฟล์ functions.php ของธีม

  • เพิ่มโค้ดต่อไปนี้:
    add_filter( 'init', function() {
        $my_account_page_id   = wc_get_page_id( 'myaccount' );
        $my_account_parent_id = get_post_parent( $my_account_page_id );
        if ( $my_account_page_id && $my_account_parent_id ) {
            $default_language = apply_filters( 'wpml_default_language', '' );
            $languages        = apply_filters( 'wpml_active_languages', [] );
            foreach ( $languages as $language ) {
                if ( $language['code'] !== $default_language ) {
                    $translated_id  = apply_filters( 'wpml_object_id', $my_account_page_id, 'page', true, $language['code'] );
                    if ( $translated_id ) {
                        $translated_url = get_page_uri( $translated_id );
                        add_rewrite_rule( trailingslashit( $translated_url ) . '?$' , 'index.php?pagename=' . $translated_url, 'top' );
                        foreach ( WC()->query->query_vars as $endpoint ) {
                            $translated_endpoint = apply_filters( 'wpml_get_endpoint_translation', $endpoint, $endpoint, $language['code'] );
                            add_rewrite_rule( trailingslashit( $translated_url ) . $translated_endpoint . '(/(.*))?/?$' , 'index.php?' . $endpoint . '=$matches[2]&pagename=' . $translated_url, 'top' );
                        }
                    }
                }
            }
        }
    } );

ปัญหาที่ทราบแล้วทั้งหมด →