- Status
- Aberto
- Relatado para
- WPML Multilingual & Multicurrency for WooCommerce 5.3.2
- Tags de tópico
- Bug, WCML
Visão geral do problema
Ao usar o WPML Multilingual & Multicurrency for WooCommerce, definir a página my-account como filha da página shop pode levar a erros 404 ao acessar os endpoints de Minha conta (como Pedidos, Downloads, etc.) em idiomas secundários. Esse problema geralmente ocorre com configurações de links permanentes como Base da loja com categoria ou Base da loja.
Solução alternativa
Por favor, certifique-se de ter um backup completo do seu site antes de prosseguir.
- Abra o arquivo functions.php do tema.
- Adicione o seguinte código:
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' ); } } } } } } );