- 状态
- 未解决
- 报告针对
- 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' ); } } } } } } );