Aller au contenu Accéder à la navigation

Définir une catégorie ou un terme principal pour n’importe quelle taxonomie

Quand une publication appartient à plusieurs catégories, ou à plusieurs termes d’une même taxonomie, le terme principal indique à SEOPress lequel utiliser dans vos permaliens, vos variables dynamiques et votre fil d’Ariane.

Depuis SEOPress 10.4, vous pouvez définir un terme principal pour toutes les taxonomies publiques et hiérarchiques affichées dans l’administration WordPress : les catégories, les catégories de produits WooCommerce, et vos propres taxonomies hiérarchiques (par exemple une taxonomie « Genre » pour des livres, ou « Ville » pour des services). Avant la 10.4, seules les catégories et les catégories de produits en proposaient un.

À quoi sert le terme principal

  • Permaliens : la catégorie principale remplace la première catégorie dans la balise de permalien %category% de vos articles, et la catégorie de produit principale est utilisée dans les permaliens de produits WooCommerce qui contiennent la catégorie de produit. Le terme principal des autres taxonomies ne modifie pas vos permaliens.
  • Variables dynamiques : %%post_category%% renvoie la catégorie principale, et %%_ct_<taxonomie>%% (par exemple %%_ct_genre%%) le terme principal de cette taxonomie, dans vos titres, méta descriptions, balises sociales et schémas. Consultez la liste des variables dynamiques.
  • Fil d’Ariane (SEOPress PRO) : quand une taxonomie est sélectionnée pour un type de publication dans SEO > PRO > Fil d’Ariane > Taxonomie à afficher dans le fil d’Ariane, le fil passe par le terme principal de cette taxonomie et par ses parents.

Sans terme principal, SEOPress utilise le premier terme associé à la publication, comme WordPress. Si vous retirez le terme principal de la publication (en le décochant par exemple), SEOPress l’ignore et revient au premier terme.

Définir le terme principal d’une publication

Le sélecteur ne liste que les termes associés à la publication. Associez d’abord au moins un terme, puis choisissez le terme principal. Sélectionnez Aucune (désactivera cette fonctionnalité) pour retirer le terme principal.

Dans l’éditeur de blocs

  1. Modifiez votre publication et ouvrez la barre latérale Réglages.
  2. Dans le panneau de la taxonomie (Catégories, Catégories de produits ou votre propre taxonomie), cochez les termes de la publication.
  3. Sous la liste des termes, choisissez le terme principal dans Sélectionnez une catégorie principale (ou dans le sélecteur équivalent qui porte le nom de votre taxonomie).
  4. Enregistrez la publication.

Dans l’éditeur classique

Le même sélecteur est ajouté en bas de la boîte de la taxonomie (Catégories, Catégories de produits ou votre propre taxonomie). Sa liste suit les cases que vous cochez ou décochez. Choisissez le terme principal, puis cliquez sur Mettre à jour ou Publier.

Dans la métabox SEO

Dans l’onglet Avancé de la métabox SEO, vous trouverez un sélecteur par taxonomie, avec le même libellé. Cet onglet propose toujours le sélecteur, même quand il est masqué dans la boîte de la taxonomie (voir le filtre seopress_primary_term_inline_selector ci-dessous).

Comment le terme principal est enregistré

Le terme principal est enregistré dans une métadonnée de publication qui contient l’ID du terme :

Taxonomie Clé de la méta
Catégories (category), et catégories de produits (product_cat) sur les produits WooCommerce _seopress_robots_primary_cat (inchangée)
Toute autre taxonomie, depuis SEOPress 10.4 _seopress_robots_primary_term_{taxonomy}, par exemple _seopress_robots_primary_term_genre

Ces clés sont disponibles dans l’API REST de WordPress (champ meta de la publication). Avec WPML, le terme principal est copié dans les traductions et converti vers le terme traduit. Quand vous importez vos données depuis Yoast SEO, le terme principal de chaque taxonomie est également importé.

Pour lire le terme principal dans votre propre code :

// Primary term of the "genre" taxonomy, as a term ID (empty string if none).
$term_id = get_post_meta( get_the_ID(), '_seopress_robots_primary_term_genre', true );
if ( $term_id && has_term( (int) $term_id, 'genre' ) ) {
	$term = get_term( (int) $term_id, 'genre' );
}

Avant SEOPress 10.4, certains sites enregistraient le terme d’une autre taxonomie dans _seopress_robots_primary_cat (import CSV, API REST ou filtre seopress_primary_category_list). SEOPress continue de lire cette valeur pour la taxonomie concernée tant que vous n’avez pas enregistré de terme principal pour elle.

Pour les développeurs : les filtres

Ajoutez ces extraits au fichier functions.php de votre thème enfant ou dans un must-use plugin.

Choisir les taxonomies qui proposent un terme principal

Le filtre seopress_primary_term_taxonomies reçoit les taxonomies qui proposent un sélecteur (un tableau d’objets WP_Taxonomy indexé par nom) et le type de publication. Pour retirer une taxonomie :

add_filter( 'seopress_primary_term_taxonomies', function( $taxonomies, $post_type ) {
	unset( $taxonomies['genre'] );
	return $taxonomies;
}, 10, 2 );

Ou pour ajouter une taxonomie non hiérarchique, comme les étiquettes des articles. Son sélecteur est proposé dans l’onglet Avancé de la métabox SEO :

add_filter( 'seopress_primary_term_taxonomies', function( $taxonomies, $post_type ) {
	if ( 'post' === $post_type ) {
		$taxonomies['post_tag'] = get_taxonomy( 'post_tag' );
	}
	return $taxonomies;
}, 10, 2 );

Filtrer les termes proposés

Le filtre seopress_primary_term_list reçoit les termes proposés, le nom de la taxonomie et la publication. Par exemple, pour ne jamais proposer « Non classé » :

add_filter( 'seopress_primary_term_list', function( $terms, $taxonomy, $post ) {
	if ( 'category' !== $taxonomy || ! is_array( $terms ) ) {
		return $terms;
	}
	return array_values(
		array_filter( $terms, function( $term ) {
			return 'uncategorized' !== $term->slug;
		} )
	);
}, 10, 3 );

L’ancien filtre seopress_primary_category_list fonctionne toujours, pour les catégories et les catégories de produits uniquement. Il ne reçoit que les termes.

Masquer le sélecteur dans la boîte de la taxonomie

Renvoyez false dans le filtre seopress_primary_term_inline_selector pour retirer le sélecteur de la boîte de la taxonomie, dans l’éditeur de blocs et dans l’éditeur classique. Il reçoit la valeur actuelle, le nom de la taxonomie et le type de publication. Un terme principal déjà enregistré continue de fonctionner, et l’onglet Avancé de la métabox SEO propose toujours le sélecteur.

add_filter( 'seopress_primary_term_inline_selector', function( $enabled, $taxonomy, $post_type ) {
	if ( 'product_cat' === $taxonomy ) {
		return false;
	}
	return $enabled;
}, 10, 3 );

En savoir plus sur notre page dédiée à ce hook : masquer le menu déroulant de la catégorie principale sur l’écran de modification.