Tout savoir sur WordPress
Tutoriel WordPress

Modifier le texte de l’encart « Image à la Une » dans l’administration

Cette astuce permet de modifier tous les textes de l’encart « Image à la Une » de l’administration WordPress.

Depuis quelques temps maintenant, WordPress permet d’ajouter une Image à la Une aux articles, pages et Custom Post Types. A partir d’un encart du même nom, on peut associer une image principale à l’article.

L’astuce que je vous propose permet de modifier le nom de l’encart « Image à la Une » et les textes associés (« Ajouter une image à la une », « Supprimer l’image à la une », « Utiliser comme image à la une »).

Pour notre exemple, on imagine que nous avons déjà créé un Custom Post Type dont le slug est « equipe ».

Copier le code ci-dessous dans le fichier functions.php présent à la racine de votre thème :

add_filter( 'gettext', 'baw_gettext_equipe', 10, 2 );
function baw_gettext_equipe( $translated, $text ) {
	
    global $typenow;
    if( $typenow == 'equipe' || ( isset( $_REQUEST['post_id'] ) && get_post_type( $_REQUEST['post_id'] ) == 'equipe' ) ) {
		
	$translated = str_replace( 
		array( 
		'Use as featured image',
		'Set featured image',
		'Remove featured image',
		'Featured Image'
		),
		array( 
		'Utiliser comme photo',
		'Ajouter une photo',
		'Supprimer la photo',
		'Photo'
		)
		, $text 
	);
		
    }
    return $translated;
}

Comme vous pouvez le voir, les textes seront modifiés uniquement sur les pages d’ajout et d’édition du CPT ‘equipe’.

Ci-dessous, un comparatif avant/après pour que vous puissiez avoir un aperçu du résultat :

Comparatif avant/après

Maintenant c’est à vous de modifier le code en fonction de vos besoins :)

Cet article a été mis à jour il y a 2112 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

16 Commentaires

  1. Ho, alors là tu fais fort, j’étais sur le point de chercher comment faire ça et je vois le tweet passer !
    Allez j’utilise de suite, merci Jonathan !

  2. Bon tu me connais, j’ai pas pu m’empêcher de faire à ma façon, je partage et j’explique les différences :

    function custom_gettext_book( $translated, $text )
    {
         global $typenow;
         if( $typenow == 'book' || get_post_type( $_REQUEST['post_id'] ) == 'book' ) {
         	$translated = str_replace(  array( 	'Use as featured image', 
    											'Set featured image', 
    											'Remove featured image', 
    											'Featured Image'
    										), 
    									array( 	'Utiliser comme couverture de livre', 
    											'Ajouter une couverture de livre', 
    											'Supprimer la couverture de livre', 
    											'Couverture de livre'
    										)
    									, $text );
         }
         return $translated;
    }
    add_filter( 'gettext', 'custom_gettext_book', 10, 2 );
    

    1. J’utilise str_replace au lieu de str_ireplace car je sais que ce je traite est à la bonne casse et bon best niveau perf php.
    2. Je fais un seul appel et remplacement grâce à l’utilisation des « array » dans str_replace
    3. J’utilise $text et non $translated dans str_replace pour que quelle que soit la lanque utilisée dans l’administration, la traduction soit faite.
    4. J’ai donc mis le texte à remplacer en anglais, comme dans le core de WP et non en français.
    5. Attention dans les 2 codes vous ne pouvez pas utiliser __() pour traduire vos textes, sinon vous tournerez en boucle infinie :)
    6. Dans mon exemple, le texte a changé, à vous de mettre le votre bien sur.

  3. Encore une bonne astuce, pratique pour personnaliser le backoffice pour un client.
    Le seule « hic », à force t’entasser dans les favoris (ou autre) des astuces on ne sait plus ou donner de la tête (surtout si vous avez beaucoup de site en production).
    Je bookmark.

    Cordialement,
    Yannick

  4. Super !
    Est-il possible d’appliquer ce changement à tous les articles ? J’ai cru comprendre (quand vous faites allusion aux custom post types) qu’ici, ça ne fonctionne qu’avec un seul type de post ?

  5. @Jonathan, en l’occurrence les inscrits ne peuvent qu’écrire des articles (donc des posts), donc je laisserai la condition et je remplacerai « equipe » par « post », merci beaucoup, ce sera plus clair pour les incrits :)

  6. @Tom : Si articles = posts Oui ! Il suffit de remplacer « equipe » par « post ». Par contre, si cela doit s’appliquer à tous les Custom Post Type, Articles et Pages, il faut supprimer la condition qui vérifie le CPT.

  7. J’ai eu besoin de ton astuce Jonathan pour l’un de mes sites mais ça n’est pas passé pour mon custom post type. WordPress était en français (dernière version actuellement disponible) et la traduction ne s’affichait pas. J’ai testé dans la solution de Julio et cette fois, c’est passé. Je pense que ça vient du fait que tu recherches une chaine en français alors qu’elle est à l’origine en anglais avant traduction.

  8. Merci pour ce code
    Le seul soucis c’est que cela modifie le reste de la page en Anglais
    Par exemple le bouton « Mettre à Jour » devient « Update »
    « Ajouter un media » devient « Add Media »…etc…
    Suis je le seul à qui cela arrive?
    (je suis sur la version 3.8.1)
    Si quelqu’un a une solution c’est super
    Merci d’avance

  9. Chez moi aussi, cela fait sauter la traduction française des autres champs … Je suis sur la version 3.9.2, avez-vous une idée ?
    Merci :-)

  10. function mytools_gettext_post( $translated_text, $text, $domain ) {
    switch ( $text ) {
    case ‘Featured Image’ :
    $translated_text = __( ‘Couverture de livre’ );
    break;
    case ‘Use as featured image’ :
    $translated_text = __( ‘Utiliser comme couverture de livre’ );
    break;
    case ‘Set featured image’ :
    $translated_text = __( ‘Ajouter une couverture de livre’ );
    break;
    case ‘Remove featured image’ :
    $translated_text = __( ‘Supprimer la couverture de livre’ );
    break;
    }
    return $translated_text;
    }
    add_filter( ‘gettext’, ‘mytools_gettext_post’, 20, 3 );

bef949e10cdbde931a95297c0277d835eeeeeeeeeeeeeeee