WPML
Statut
Ouvert
Signalé pour
WPML Multilingual & Multicurrency for WooCommerce 5.3.2
Étiquettes de sujet
Bug, WCML

Aperçu de l’anomalie

Lors de l’utilisation de WPML Multilingual & Multicurrency for WooCommerce, définir la page my-account comme enfant de la page shop peut entraîner des erreurs 404 lors de l’accès aux points de terminaison de Mon compte (comme Commandes, Téléchargements, etc.) dans les langues secondaires. Ce problème se produit généralement avec des paramètres de permaliens tels que Base de la boutique avec catégorie ou Base de la boutique.

Solution de contournement

Assurez-vous d’avoir une sauvegarde complète de votre site avant de continuer.


  • Ouvrez le fichier functions.php du thème.

  • Ajoutez le code suivant :
    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' );
                        }
                    }
                }
            }
        }
    } );

Toutes les anomalies connues →