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.
Merci d'avance.
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:
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';
}
}