WordPress : Comment internationaliser l’image d’en-tête ?

Publié par Jean-Michel le

J’ai dans le code suivant dans le modèle:

<img src="<?php header_image(); ?>" />

Cependant, je souhaite modifier cette image en fonction de la langue sélectionnée (via le paramètre GET lang).

La question est de savoir comment modifier cette fonction pour rechercher différentes images en fonction du paramètre GET reçu ?

J’ai pensé à:

  1. Changez ce code sur header.php en un chemin d’image fixe, afin que je puisse mettre un if et choisir entre les images que je veux.
  2. Remplacez le résultat de la fonction get_header_image() et utilisez-le à la place sur header.php selon le paramètre reçu, en remplaçant en quelque sorte le suffixe de chaîne .png par _en.png ou .png par _es.png.
  3. Modifiez la fonction header_image() pour qu’elle se comporte comme je le souhaite.
Lire également:  Wordpress : Exécutez deux thèmes simultanés dans une seule installation

Tous ces moyens me paraissent laids. Existe-t-il de meilleurs moyens?

Solution n°1 trouvée

J’ai utilisé la deuxième approche (je poste ce que j’ai fait car cela peut être utile à quelqu’un):

    <img src="<?=
       isset($_REQUEST['lang']) ?
          (str_replace('.jpg', '_' . $_REQUEST['lang'] . '.jpg', get_header_image()))
          : get_header_image()
     ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />

Solution n°2 trouvée

Filtrez la get_theme_mod()fonction ( wp-includes/theme.php) :

add_filter( 'theme_mod_header_image', 'localized_header' );

function localized_header( $img )
{
    // Do something awesome with the $img path.
    return $img;
}
Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *