web-dev-qa-db-ja.com

静的ページのホームページにthe_contentが表示されない

ここで何か悪いことをしているに違いない。

私は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>

コンテンツが表示されない理由は何ですか。

3
dragonfeet2012

あなたは本当にループを持っていません。

<?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(); 
  }
} ?>

何が起こっているのですか:

  1. 投稿コンテンツがあることを確認するには、have_posts()を使用します。必要に応じてelse句を使用してデフォルトのコンテンツを提供できます。
  2. while(have_posts())を使ってそのコンテンツをループします
  3. the_post()を実行して$post変数を設定し、さらにループカウンタをインクリメントします。 the_post() anなしでそれを試してみてくださいあなたは無限ループを得る。これはあなたのコードから欠けていた最も重要な部分です。
  4. the_post()が実行されたので、投稿テンプレートタグは期待通りに動作するはずです。

私はあなたのコードをあまりにも根本的に編集しませんでした、しかし、たとえそれがうまくいっているようであっても、私はそのthe_titleをLoopの中にも持ってくるでしょう。それは実際に ループの内側にあるべきです そしてそれはそれの外側で期待されるようにいつも働くというわけではありません。

参照

https://codex.wordpress.org/Class_Reference/WP_Query#Methods

9
s_ha_dum

まず第一に、あなたがあなたのページを静的フロントページとして設定するならば、あなたはテンプレートをそのページに関連付ける必要はなく、そしてテンプレートはヘッダを必要としません。 WordPressは、 テンプレート階層 のように、静的フロントページにfront-page.phpテンプレートを自動的に使用します。

質問に答えるには、最初に the_post() を呼び出して、 the_content() functionが依存するグローバル変数を設定する必要があります。

4
Milo