web-dev-qa-db-fra.com

Affichage du titre de la page sur index.php

J'ai ma page de messages définie comme index.php, Et là-bas, j'ai mon en-tête principal (comme je le fais sur toutes les pages).

J'ai cependant du mal à afficher l'en-tête de la page. La page s'appelle `` Blog '' dans WordPress, et a été spécifiée comme page de publications.

Si je génère l'en-tête de la page avec wp_title('');, j'obtiens le titre de la page - "Blog" - mais avec le nom du site après (peut-être à cause du plugin Yoast SEO).

Si j'utilise the_title(), cela me donne le titre du blog le plus récent, même si j'appelle la fonction en dehors de la boucle.

J'ai donc dû recourir à un simple codage en dur <h1>Blog</h1> Qui est loin d'être idéal.

Existe-t-il un moyen de récupérer dynamiquement le nom du titre de la page, mais juste le titre de la page seul?

1
pealo86

Étrange. En dehors de la boucle, the_title () should vous donne le nom de la page actuelle, if vous êtes vraiment sur une page, et ne visualisez pas un article spécifique. S'il donne le titre du message à la place, cela peut signifier que vous êtes en quelque sorte dans une boucle. Mais si c'était vrai, wp_title ne devrait pas afficher "Blog".

Voyez si d'autres options donnent le même résultat:

//the_title();
single_post_title();
echo $post->post_name; // I think this shows the url page name

Vérifiez également is_page (). Vous pouvez essayer le test is_page ('Blog').

if (is_page('blog')) {
echo 'Blog';
}
else {
the_title();
}

juste pour voir ce qui se passe.

5
user781470

Il est vrai que the_title() sur la page du blog renverra le titre de l'article le plus récent et qu'il ne pourra donc pas être utilisé.

Lorsqu'une page est définie comme une "page de publications" à partir des paramètres de lecture, WP appelle le fichier modèle home.php (Ou index.php Si home.php Ne fonctionne pas). n'existe pas) au lieu de page.php (voir: Hiérarchie des modèles ).

Ainsi, is_page() conditionnel ne fonctionnera pas sur la page de blog car ce n'est plus une page.

La seule façon de sortir le titre de la page réelle est d'utiliser single_post_title();

single_post_title() fait partie du fichier general-template.php qui indique clairement que

Si nous sommes sur la page de blog et que cette page n'est pas la page d'accueil ou une seule page désignée comme page d'accueil, utilisez le titre de la page de conteneur.

Vous pouvez consulter le code et les commentaires ici https://core.trac.wordpress.org/browser/tags/4.4/src/wp-includes/general-template.php#L871

2
Puneet Sahalot
$our_title = get_the_title( get_option('page_for_posts', true) );
1
zeeshan zafar

Je sais que cela fait un moment depuis l'OP, mais j'espère que cela aidera les autres qui sont venus ici chercher la même chose.

single_post_title () fonctionne pour les pages jusqu'à ce que vous arriviez aux pages de blog et de catégorie (et probablement aux pages de produits et de balises dans woocommerce)

Vérifiez donc d'abord s'il s'agit d'une page, sinon utilisez la fonction wp_title

if (is_page()) {
    single_post_title();
} else {
    echo rtrim(wp_title('', false), '- ');
}

J'avais besoin de supprimer le titre du site de mes paramètres, mais je l'ajoutais manuellement de chaque côté de cette fonction de toute façon.

0
moose-o