web-dev-qa-db-fra.com

Comment supprimer "Nom de taxonomie:" de wp_title

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.)

3
supertrue

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 );
5
Mamaduka

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;
}
0
chrisguitarguy