Happiness bar 2 : Du multisite en locale

Happiness bar 2 : Du multisite en locale

Samedi 24 janvier se déroulait la seconde journée du WordCamp Paris 2015. Comme en 2014 et comme la veille, je tenais le Happiness Bar accompagné de Alex Concha et d’autres bénévoles désireux d’aider les visiteurs.

J’ai encore eu une question technique qui a été résolue avec un seul hook.

Lilou multisite

« Dans un multisite, tous les sites ont le même titre car seul la langue change. Avec beaucoup de langues, devoir deviner quel site est dans quel langue est impossible. J’ai donc ajouté EN, FR, PT, CN à la fin du titre pour les différencier. Le soucis est qu’en front aussi ce mot apparaà®t et ce n’est pas beau. »

Il faut d’abord savoir comment WordPress récupère cette information. Le titre d’un site, son nom en fait est lu grà¢ce à la fonction get_bloginfo(). Le paramètre passé est name.

Sachant que cette fonction a un filtre en sortie, j’en profite pour la modifier :

add_filter( 'bloginfo', 'baw_hack_bloginfoname', 10, 2 );

function baw_hack_bloginfoname( $output, $show ) {
if ( 'name' == $show && is_admin() && ! defined( 'DOING_AJAX' ) ) {
$locale = '' != get_locale() ? substr( get_locale(), 0, 2 ) : 'EN';
$output .= ' (' . $locale . ')';
}
return $output;
}

Je vérifie que l’information demandée à la fonction get_bloginfo() est bien name et surtout je vérifie que je suis côté admin non ajax (car en front je peux utiliser AJAX pour récupérer le nom d’un site !).

Puis je concatène ce nom avec la locale (la langue) en cours entre parenthèses. Je l’ai un peu parsée avant pour ne garder que les 2 premiers caractères et ajouté en dur EN si c’est vide, car pas de locale vaut en_US.

Vous aussi vous aviez un multisite avec le même nom mais plusieurs langues ? Voici ma solution !

Vous aimez ? Partagez !


Réagir à cet article

220 caractères maximum