- الحالة
- مفتوحة
- أُبلغ عنها لـ
- WPML Multilingual & Multicurrency for WooCommerce 5.3.2
- وسوم الموضوع
- Bug, WCML
نظرة عامة على المشكلة
عند استخدام WPML متعدد اللغات وتعدد العملات لـ 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' ); } } } } } } );