Le <title>
généré par wp_title dans mes pages d'archive de taxonomie personnalisée contient le nom de taxonomie singulier avec deux points. Je ne peux pas comprendre d'où cela vient (ou s'il s'agit du comportement par défaut de Wordpress), et j'aimerais le supprimer. Par exemple, dans la page d’archive du terme 'Vanilla' dans une taxonomie appelée 'Flavors', le <title>
est:
Saveur: Vanille | Mon nom de site
Ce que je voudrais que le titre soit, c'est simplement
Vanille | Mon nom de site
Le code dans header.php est le suivant:
<title><?php wp_title('|', true, 'right'); ?></title>
Il n'y a qu'une fonction dans functions.php qui est connectée à wp_title et qui n'a pas de rapport avec le nom Taxonomy. Je ne peux pas comprendre d'où cela vient ni comment l'enlever.
Comment puis-je enlever cela?
(La réponse dans Comment supprimer le nom de taxonomie parent du titre généré par wp_title ()? n'est pas généralisable, et je suppose qu'il existe un moyen plus direct de le faire.)
Utilisez le filtre wp_title
pour contrôler la sortie
function mamaduka_remove_tax_name( $title, $sep, $seplocation ) {
if ( is_tax() ) {
$term_title = single_term_title( '', false );
// Determines position of separator
if ( 'right' == $seplocation ) {
$title = $term_title . " $sep ";
} else {
$title = " $sep " . $term_title;
}
}
return $title;
}
add_filter( 'wp_title', 'mamaduka_remove_tax_name', 10, 3 );
Je vous recommande d'utiliser un plugin SEO pour prendre le contrôle de tous vos titres. WordPress SEO de Yoast est très bon.
Ou vous pouvez ajouter un filtre à wp_title
pour modifier la sortie.
<?php
add_filter( 'wp_title', 'wpse29020_fix_title', 10, 3 );
function wpse29020_fix_title( $title, $sep, $seplocation )
{
// If this isn't our flavors taxonomy, just return the title
if( ! is_tax( 'flavors' ) ) return $title;
// Get the term
$obj = get_queried_object();
// Get the terms name
$name = sanitize_term_field( 'name', $obj->name, $obj->term_id, 'flavors', 'display' );
// construct the title
$title = $name . " $sep " . bloginfo( 'name' );
return $title;
}