WPML
Stato
Aperto
Segnalato per
WPML Multilingual & Multicurrency for WooCommerce 5.3.2
Tag dell’argomento
Bug, WCML

Panoramica del problema

Quando usi WPML Multilingual & Multivaluta per WooCommerce, impostare la pagina my-account come figlia della pagina shop può causare errori 404 durante l’accesso agli endpoint di Il mio account (come Ordini, Download, ecc.) nelle lingue secondarie. Questo problema si verifica in genere con impostazioni dei permalink come Base negozio con categoria o Base negozio.

Soluzione alternativa

Assicurati di avere un backup completo del tuo sito prima di procedere.


  • Apri il file functions.php del tema.

  • Aggiungi il seguente codice:
    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' );
                        }
                    }
                }
            }
        }
    } );

Tutti i problemi noti →