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' );
                        }
                    }
                }
            }
        }
    } );

כל התקלות הידועות →