- סטטוס
- פתוח
- דווח עבור
- 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' ); } } } } } } );