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

Todos os problemas conhecidos →