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!
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.
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.
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