ここで何か悪いことをしているに違いない。
私はfront-page.phpを使って自分のサイトを静的フロントページで設定します。私は管理者にタイトルを付けてページを作成し、テンプレートのドロップダウンからfront-page.phpを選びました。
私の肩書きは大丈夫ですが、the_content();ではない。
以下のように特別なことはしていません。
<?php
/*
Template Name: Homepage
*/ ?>
<?php get_header(); ?>
<div class="content">
<div class="welcome_area">
<div class="welcome_area_title"><?php the_title('');?></div>
<div class="welcome_area_text">
<?php the_content(); ?>
</div>
コンテンツが表示されない理由は何ですか。
あなたは本当にループを持っていません。
<?php get_header(); ?>
<div class="content">
<div class="welcome_area">
<div class="welcome_area_title"><?php the_title('');?></div>
<div class="welcome_area_text"><?php
if (have_posts()) {
while (have_posts()) {
the_post();
the_content();
}
} ?>
何が起こっているのですか:
have_posts()
を使用します。必要に応じてelse
句を使用してデフォルトのコンテンツを提供できます。while(have_posts())
を使ってそのコンテンツをループしますthe_post()
を実行して$post
変数を設定し、さらにループカウンタをインクリメントします。 the_post()
anなしでそれを試してみてくださいあなたは無限ループを得る。これはあなたのコードから欠けていた最も重要な部分です。the_post()
が実行されたので、投稿テンプレートタグは期待通りに動作するはずです。私はあなたのコードをあまりにも根本的に編集しませんでした、しかし、たとえそれがうまくいっているようであっても、私はそのthe_title
をLoopの中にも持ってくるでしょう。それは実際に ループの内側にあるべきです そしてそれはそれの外側で期待されるようにいつも働くというわけではありません。
https://codex.wordpress.org/Class_Reference/WP_Query#Methods
まず第一に、あなたがあなたのページを静的フロントページとして設定するならば、あなたはテンプレートをそのページに関連付ける必要はなく、そしてテンプレートはヘッダを必要としません。 WordPressは、 テンプレート階層 のように、静的フロントページにfront-page.php
テンプレートを自動的に使用します。
質問に答えるには、最初に the_post()
を呼び出して、 the_content()
functionが依存するグローバル変数を設定する必要があります。