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

Toutes les anomalies connues →