- Stato
- Risolto dall’autore
- Segnalato per
- WPML SEO 2.0.1
Panoramica del problema
Questo è un problema generale di Yoast SEO (non specifico di WPML) ed è stato segnalato qui.
Se stai formattando i tuoi URL per visualizzare la lingua come parametro in WPML → Lingue, noterai che le pagine nelle lingue secondarie impaginate mostreranno un link canonico errato.
Soluzione alternativa
Fai un backup completo del tuo sito prima di procedere. Quindi, aggiungi il seguente codice nel file functions.php del tuo tema:
// define the wpseo_canonical callback
function wpmldp_filter_wpseo_canonical_lang_parameter_position( $canonical ) {
// decode URL
$canonical = urldecode($canonical);
// get current language
$my_current_lang = apply_filters( 'wpml_current_language', NULL );
// define ?lang parameter
$param = '?lang='.$my_current_lang;
// check if current $canonical contains the parameter
if(strpos($canonical, $param) !== false){
// remove the parameter from URL
$canonical = str_replace('/'.$param, "", $canonical);
// add it again
$canonical = $canonical.$param;
}
return $canonical;
};
// add the filter
add_filter( 'wpseo_canonical', 'wpmldp_filter_wpseo_canonical_lang_parameter_position', 999 );
