- Statut
- En attente de l’auteur
- Extension/thème associé
- Custom Permalinks
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Lors de l’utilisation de Custom Permalinks avec WPML, les liens internes vers les pages traduites peuvent pointer vers la page dans la langue d’origine au lieu de la page traduite lorsque la page cible utilise un permalien personnalisé.
Solution de contournement
Assurez-vous d’avoir une sauvegarde complète de votre site avant de continuer.
Solution de contournement – Partie I
- Ouvrez le fichier …/wp-content/plugins/custom-permalinks/includes/class-custom-permalinks-frontend.php.
- Cherchez la ligne 165.
- Remplacez :
public function wpml_permalink_filter( $permalink, $language_code ) { $custom_permalink = $permalink;
- Par :
public function wpml_permalink_filter( $permalink, $language_code ) { $custom_permalink = $permalink; $language_code = apply_filters( 'wpml_current_language', NULL );
Solution de contournement – Partie II
- Dans le même fichier (class-custom-permalinks-frontend.php).
- Cherchez la ligne 913.
- Remplacez :
public function custom_page_link( $permalink, $page ) { $custom_permalink = get_post_meta( $page, 'custom_permalink', true ); if ( $custom_permalink ) { $language_code = apply_filters( 'wpml_element_language_code', null, array( 'element_id' => $page, 'element_type' => 'page', ) ); $permalink = $this->wpml_permalink_filter( $custom_permalink, $language_code );
- Par :
public function custom_page_link( $permalink, $page ) { $custom_permalink = get_post_meta( $page, 'custom_permalink', true ); if ( $custom_permalink ) { $language_code = apply_filters( 'wpml_element_language_code', null, array( 'element_id' => $page, 'element_type' => 'page', ) ); $page_translated = apply_filters( 'wpml_object_id', $page, 'page', $language_code ); $custom_translated_permalink = get_post_meta( $page_translated, 'custom_permalink', true ); if ( $custom_translated_permalink ) { $custom_permalink = $custom_translated_permalink; } $permalink = $this->wpml_permalink_filter( $custom_permalink, $language_code );