J'essaie d'utiliser wp_title()
pour créer un en-tête pour mes pages, mais j'utilise une page de garde statique et, bien que toutes les autres pages affichent correctement le titre, la page de garde ne le sera pas.
C'est ce que je travaille avec:
<div id="main-content">
<h1><?php wp_title("", true); ?></h1>
<?php while( have_posts() ) : the_post() ?>
<div class="pagecontent">
<?php the_content(); ?>
</div>
<?php endwhile ?>
</div>
Initialement, je pensais que la page de couverture pouvait être tirée de index.php
, aussi j’ai ajouté le même extrait de code, mais sans succès, la même chose est rendue: une balise vide h1
.
Que se passe t-il ici? Je veux que le titre de la page apparaisse dans la balise h1.
Ce n'est pas pour sortir un titre. Utilisez the_title () ou get_the_title () ,
Si vous regardez le source de wp_title()
, vous verrez qu’aucune sortie n’est prévue pour une page de couverture statique.
Utilisez the_title()
pour la sortie visuelle, comme suggéré par @Chris_O. Mais pour le titre dans la section <head>
, vous devez filtrer wp_title()
et le remplir s'il est vide.
Exemple de code ( à télécharger sur GitHub ):
// Hook in very late, let the theme fix it first.
add_filter( 'wp_title', 't5_fill_static_front_page_title', 100 );
/**
* Fill empty front page title if a static page is set.
*
* @wp-hook wp_title
* @param string $title Existing title
* @return string
*/
function t5_fill_static_front_page_title( $title )
{
// another filter may have fixed this already.
if ( '' !== $title or ! is_page() or ! is_front_page() )
{
return $title;
}
$page_id = get_option( 'page_on_front' );
$page = get_page( $page_id );
if ( ! $page or '' === $page->post_title )
{
$title = get_option( 'blogname' );
}
else
{
$title = $page->post_title;
}
// We don’t know if there is any output after the title, so we cannot just
// add the separator. We use an empty space instead.
return "$title ";
}