web-dev-qa-db-fra.com

Deux balises de titre dans mon en-tête

Je construis un thème enfant et il a actuellement une très simple section <head> dans header.php:

<head>
  <meta charset="<?php bloginfo( 'charset' ); ?>">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <title><?php wp_title( '|', true, 'right' ); ?></title>
  <link rel="profile" href="http://gmpg.org/xfn/11">
  <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
  <!--[if lt IE 9]>
  <script type="text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/html5shiv.min.js"></script>
  <![endif]-->

  <?php wp_head(); ?>
</head>

J'imagine que wp_head() est responsable du deuxième élément <title> (il apparaît juste là dans le code HTML final), mais d'autres choses que j'ai lues disent que c'est impossible.

Devrais-je supprimer le <title> de mon header.php ou devrais-je ajouter quelque chose à mes fonctions pour supprimer le titre de wp_head() (par exemple, remove_action('wp_head', 'title')?

Ou devrais-je faire autre chose?

6
Django Reinhardt

Les deux balises de titre peuvent être expliquées comme si vous utilisiez un thème écrit pour Wordpress4.1 et utilisant en réalité 4.1. À partir de la version 4.1, vous n'avez plus besoin d'appeler wp_title() en tête, vous pouvez utiliser la nouvelle balise de support de thème title_tag qui ajoute automatiquement la balise wp_title() dans l'en-tête.

Le thème parent que vous utilisez le fait probablement déjà. Regardez dans votre functions.php pour cette ligne de code

add_theme_support( 'title-tag' );

Comme solution, copiez le thème parent header.php dans votre thème enfant et supprimez simplement la fonction wp_title() du thème enfant header.php.

Voici également une excellente fonction à garder à l’esprit pour la compatibilité ascendante et qui est utile pour les développeurs de thèmes parents: ( Extrait du codex )

 if ( ! function_exists( '_wp_render_title_tag' ) ) {
    function theme_slug_render_title() 
    {
        ?>
        <title>
            <?php wp_title( '|', true, 'right' ); ?>
        </title>
        <?php
    }
    add_action( 'wp_head', 'theme_slug_render_title' );
}
9
Pieter Goosen