SEO WordPress : modifier un titre en fonction d’une custom post meta

Quand on veut gérer facilement les titres de ses pages sur un WordPress on utilise généralement le plugin SEO WordPress (by Yoast) parce que celui-ci permet une configuration relativement poussée. Personnellement l’une des options que j’apprécie
le plus c’est la possibilité d’ajouter dans le titre le contenu des custom post meta d’un article.

Cependant rien n’est jamais assez complet et en l’occurrence moi j’avais besoin de modifier le <title> en fonction de la présence ou non d’une custom post meta. Concrètement je voulais ajouter une donnée dans mon <title> si celle-ci était présente et non vide dans mon article (un custom post type d’ailleurs).

Voici ce que j’ai utilisé, une petite fonction à coller dans le fichier functions.php de votre theme, rien de très compliqué : je joue ici sur le filtrage de wpseo_title(); de l’API du plugin.

function ChangeMyTitle($title){
	global $post, $post_type;
	if($post_type == "mon_post_type"){ //Condition, le filtre ne sera appliqué qu'à un certain Custom Post Type. Facultatif donc.
		
		$CustomMeta = get_post_meta($post-&gt;ID, 'key_meta', true);
		$DeuxiemeCustomMeta = get_post_meta($post-&gt;ID, 'key_meta_2', true); //On peut charger d'autres metas si besoin.
		if($CustomMeta != ''){ // Si ma custom meta n'est pas vide, je change le title.
			$title = str_replace($post-&gt;post_title, $post-&gt;post_title.' ('.$CustomMeta.')', $title);
                        //Pour mes besoins ici j'ai simplement changé le titre original de l'article pour y ajouter à la suite la valeur de ma meta, à vous devoir selon vos besoins mais je conseille d'utiliser str_replace ou preg_replace pour conserver le dynamisme de la configuration SEO WordPress.
		}
	}else{
		$title = $title;
	}
	return $title;
}
add_filter( 'wpseo_title', 'ChangeMyTitle', 1, 2 );

Sans être obligé de modifier le plugin lui-même, on arrive donc ici à modifier son titre en fonction de la présence et/ou de la valeur d’une custom post meta ce qui ajoute encore un cran à la configuration de SEO WordPress.

Et au cas où vous auriez un doute : ça passe les mises à jour sans problème.