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