web-dev-qa-db-fra.com

Placez le titre de la page dans l'en-tête?

Normalement, dans WordPress, le titre de la page apparaît dans la zone de contenu. J'aimerais que le titre de la page apparaisse dans la zone d'en-tête. Cela ressemble à cela, je devrais le supprimer de son emplacement actuel dans le fichier content-page.php et le placer dans le fichier header.php. Mais content-page.php est appelé à partir de page.php, qui appelle la page de contenu à partir d'une boucle while (while ( have_posts() ) : the_post(); ...) - donc je pense que je devrais aussi déplacer ou copier ceci dans l'en-tête. On dirait beaucoup de problèmes.

Serait-il plus logique de déplacer une partie de l'en-tête HTML dans le contenu de la page, afin que je n'ai pas à exécuter la boucle while plus d'une fois?

(En tant qu'outil d'apprentissage, je recrée un site HTML existant avec WordPress, à l'aide du thème de démarrage _s.)

--- MODIFIER ---

Merci pour les réponses. Très utile. Voici les résultats de certains tests, basés sur vos réponses. Étant donné le code suivant, dans l'en-tête (en dehors de la boucle):

wp_title(): <?php wp_title('', true,''); ?><br>
the_title(): <?php the_title(); ?><br>
single_post_title(): <?php single_post_title(); ?><br>
$post->post_name: <?php echo 'page name: ' . $post->post_name; ?><br>
ispage? : <?php echo (is_page() ? 'yes' : 'no'); ?><br>
ispage(about-us) : <?php echo (is_page('about-us') ? 'yes' : 'no'); ?><br>
ispage(About Us) : <?php echo (is_page('About Us') ? 'yes' : 'no'); ?>

Vu de ma page À propos de nous, je reçois:

wp_title() About UsAt The Tabernacle
the_title(): About Us
single_post_title(): About Us
$post->post_name: page name: about-us
ispage? : yes
ispage(about-us) : yes
ispage(About Us) : yes

Vu de ma page d'accueil, je reçois:

wp_title(): At The Tabernacle My site motto here
the_title(): Home
single_post_title(): Home
$post->post_name: page name: home
ispage? : yes
ispage(about-us) : no
ispage(About Us) : no

Et vu d'un post "Hello World", je reçois:

wp_title(): Hello world!At The Tabernacle
the_title(): Hello world!
single_post_title(): Hello world!
$post->post_name: page name: hello-world
ispage? : no
ispage(about-us) : no
ispage(About Us) : no

Conclusion: je peux utiliser the_title () ou single_post_title () (wp_title renvoie plus de texte que je ne le souhaite). Et je peux tester is_page (...) afin d'afficher un nom de page spécifique lorsque je consulte un message.

Je vous remercie!

2
user781470

Si vous avez seulement besoin du titre, vous pouvez le demander facilement en dehors de la boucle.

Essayez d'appeler the_title() dans votre en-tête. Cela devrait marcher

Mais vous devez savoir que si vous ne posez pas de condition, chaque page de votre site Web affichera son titre dans la section en-tête.

EDIT: la fonction à appeler est get_the_title($post->ID) car the_title() ne vous permet pas de spécifier l'identifiant de publication en tant qu'argument. Vous pouvez vérifier la fonction Wordpress Codex pour vous permettre de rechercher des informations à partir de votre publication en dehors de la boucle.

3
mathieuhays

Vous devez utiliser wp_title ();

Si vous essayez d'utiliser le titre du post comme suit:

<head> 
 <title> post title here </title> 
</head>

Vous devez ajouter le wp_title ('', true, '');

<head>
 <title> <?php wp_title('', true,''); ?> </title>
</head>

Par exemple: si votre nom de poste était Hello World, Hello World apparaîtrait maintenant dans l'onglet.

http://codex.wordpress.org/Function_Reference/wp_title

4
user3325126

Alors que les méthodes mentionnées ci-dessus fonctionnent pour le moment, les développeurs principaux de WordPress recommandent comme suit:

À partir de 4.1 et de Twenty Fifteen, il est recommandé aux thèmes d’afficher des titres en ajoutant un support de thème comme celui-ci: - Konstantin Obenland

Vous pouvez soit ajouter cette ligne dans le fichier functions.php de votre thème après le after_setup_theme . ou

de la même page,

À partir de 4.1 et de Twenty Fifteen, la manière recommandée pour les thèmes d'afficher des titres consiste à ajouter un support de thème comme ceci:

function theme_slug_setup() {
    add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'theme_slug_setup' );

La prise en charge devrait être ajoutée à l’action after_setup_theme ou init, mais au plus tard. Il n'accepte aucun autre argument.

Cela permet à WordPress de choisir le titre de la page dans l’en-tête, sans utiliser de balises codées en dur dans le fichier header.php.

votre titre sera affiché sous le format suivant.

Page Title - Site Title

0
Vishwa