WPML multi-linguisme et moteur de recherche…
Si vous utilisez WordPress et le plugin WPML pour gérer un site en multi-langue vous avez surement constaté que l’utilisation du moteur de recherche de WordPress affichera alors la liste des résultats pour la langue par défaut… et pas pour la langue actuellement utilisée par votre visiteur.
Pour améliorer cela voici un petit patch… Ce n’est pas très clean mais ça fonctionne (je vous laisse optimiser cela pour utiliser, par exemple, une surcharge de fonction plutôt qu’une modification directe des fichiers standards de WordPress (qui seront écrasés lors d’une mise à jour…)
Modification du fichier wp-includes/general-template.php au niveau de la fonction get_bloginfo
case 'short_language':
$output = get_locale();
$short_language = explode("_", $output);
$output = $short_language[0];
break;
Et ensuite au niveau de votre thème (par exemple iNove dans le fichier wp-content/themes/inove/templates/header.php) :
il suffit de modifier le formulaire comme ceci :
<form action="<?php bloginfo('home'); ?>/<?php bloginfo('short_language'); ?>/"
method="get">
Amusez vous bien avec WordPress et WPML !
ps : au passage vous pouvez aussi modifier les liens title/home pour ne pas changer de langue quand on clic sur le logo
<h1 id="title">
<a href="<?php bloginfo('url'); ?>/<?php bloginfo('short_language'); ?>/">
<?php bloginfo('name'); ?>
</a>
</h1>
et pour le fil d’ariane…
<a title="<?php _e('Home', 'inove'); ?>"
href="<?php echo get_settings('home'); ?>/<?php bloginfo('short_language'); ?>/">
<?php _e('Home', 'inove'); ?>
</a>
L’idée de départ vient de la lecture de cette conversation…