WPML
Stato
In attesa dell’autore
Plugin/tema correlato
Custom Permalinks
Tag dell’argomento
Compatibility

Panoramica del problema

Utilizzando Custom Permalinks con WPML, i link interni alle pagine tradotte potrebbero puntare alla pagina nella lingua originale anziché alla pagina tradotta quando la pagina di destinazione utilizza un permalink personalizzato.

Soluzione alternativa

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

Soluzione alternativa – Parte I


  • Apri il file …/wp-content/plugins/custom-permalinks/includes/class-custom-permalinks-frontend.php.

  • Cerca la riga 165.

  • Sostituisci:
    	public function wpml_permalink_filter( $permalink, $language_code ) {
    		$custom_permalink   = $permalink;
    
            


  • Con:
    	public function wpml_permalink_filter( $permalink, $language_code ) {
    		$custom_permalink   = $permalink;
    		$language_code = apply_filters( 'wpml_current_language', NULL ); 
            

Soluzione alternativa – Parte II


  • Nello stesso file (class-custom-permalinks-frontend.php).

  • Cerca la riga 913.

  • Sostituisci:
    	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
    			);
    
            


  • Con:
    		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
    			);
    
            

Tutti i problemi noti →