web-dev-qa-db-fra.com

Comment déplacer le titre de la page (H1) vers header.php (en dehors de la boucle) dans un thème Wordpress?

J'essaie de mettre le titre de ma page dans header.php parce que je veux qu'il soit imprimé avant la div de contenu initial. À ma grande surprise, cela s’est avéré assez difficile.

  • J'ai essayé d'utiliser the_title (), et cela fonctionne dans la plupart des endroits, mais sur les pages de catégorie, par exemple, il tire le nom du premier message à la place.
  • J'ai essayé d'utiliser wp_title (), mais le titre de mon site contient le nom de mon site et je ne veux pas que ce soit dans mes H1.
  • Je sais que je peux faire un tas de déclarations si et juste m'assurer de couvrir chaque scénario, mais cela semble compliqué, il y a sûrement une option plus propre et plus durable.

Merci d'avance.

1
TelFiRE

Je sais que je peux faire un tas de déclarations si et juste m'assurer de couvrir chaque scénario, mais cela semble compliqué, il y a sûrement une option plus propre et plus durable.

Nan! C'est un peu brouillon. Malheureusement, il n’existe pas de fonction unique permettant d’afficher un titre pour tous les types de page.

Il existe essentiellement 4 types de pages dans WordPress qui nécessiteront différents titres:

  • Articles simples (ou pages)
  • Les archives
  • Résultats de la recherche
  • 404

Ainsi, vous pourriez écrire votre propre fonction que vous pourriez mettre dans header.php et générer un titre approprié pour chaque type de page:

function wpse_321605_title() {
    if ( is_singular() ) {
        $queried_object_id = get_queried_object_id();

        echo get_the_title( $queried_object_id );
    } else if ( is_archive() ) {
        the_archive_title();
    } else if ( is_search() ) {
        echo 'Searching for: ' . esc_html( get_search_query() );
    } else if ( is_404() ) {
        echo 'Page Not Found';
    }
}

Cependant, beaucoup de gens n'aiment pas cette catégorie de préfixes the_archive_title() et ces archives de balises avec "Catégorie:" et "Tag:". Par conséquent, si vous ne voulez pas ces préfixes, vous devez gérer les archives de taxonomie séparément et utiliser single_term_title():

function wpse_321605_title() {
    $queried_object_id = get_queried_object_id();

    if ( is_singular() ) {
        echo get_the_title( $queried_object_id );
    } else if ( is_tax() || is_tag() || is_category() ) {
        single_term_title()
    } else if ( is_archive() ) {
        the_archive_title();
    } else if ( is_search() ) {
        echo 'Searching for: ' . esc_html( get_search_query() );
    } else if ( is_404() ) {
        echo 'Page Not Found';
    }
}
5
Jacob Peattie