web-dev-qa-db-fra.com

Existe-il un moyen de remplacer la balise <title> spécifiée dans header.php?

Tout d'abord, il ne s'agit ni d'une question de référencement, ni d'une question sur le changement de balise de titre sur l'ensemble du site. Si vous google ma question ce sont toutes les réponses que vous voyez.

Nous avons donc notre propre thème et nous avons le contrôle total sur header.php. Nous savons comment définir le titre. Actuellement, cela ressemble à ceci:

<head>
    <title><?php wp_title(' | ', true, 'right'); bloginfo('name'); ?></title>
etc...

Non, le problème est le suivant. Pour la plupart des pages, nous voulons le titre à afficher comme ci-dessus. C'est simplement que nous avons compris que pour un type de publication personnalisé (et son modèle associé), le titre du CPT ne devrait pas apparaître publiquement. C'est pour l'usage d'administrateur seulement. Étrange, mais voilà. Nous ne le montrons nulle part dans le H1, le contenu, etc. du modèle.

Mais cela se voit dans le titre.

Idéalement, nous aimerions pouvoir remplacer le titre header.php à partir du modèle, afin de spécifier un titre alternatif uniquement pour cet ensemble de pages particulier. Est-ce possible?

3
hawbsl

Commençons par changer votre <title> en

<title><?php wp_title(' | ', true, 'right'); ?></title>

Dans la mesure où l'ajout de la chaîne de titre n'était pas très futuriste, il est préférable d'utiliser un filtre pour modifier le titre. Au lieu de cela, ad (dans functions.php):

add_filter('wp_title', 'my_custom_title');
function my_custom_title( $title )
{
    // Return my custom title
    return sprintf("%s %s", $title, get_bloginfo('name'));
}

Ensuite, étendons ce petit filtre de titre pratique pour faire ce que vous voulez faire:

add_filter('wp_title', 'my_custom_title');
function my_custom_title( $title )
{
    if( is_singular("your_post_type"))
    {
        return ""; // Return empty
    }
    // Return my custom title
    return sprintf("%s %s", $title, get_bloginfo('name'));
}
4
Shawn Wernig

Vous voudrez peut-être filtrer le titre.

add_filter( 'wp_title', 'wpse179527_wp_title' );
function wpse179527_wp_title( $title ) {
  global $post;
  if ( is_single() && 'custom-post' == get_post_type( $post ) )
    return '';
  return $title;
}
2
Przemek Maczewski