投稿情報を取得するためのテンプレートからの次のコードがあります。
<?php
$args = array(
'post_type' => 'post',
'posts_per_page' => $count,
'paged' => $paged,
);
$wp_query = new WP_Query( $args );
?>
<?php if ( $wp_query->have_posts() ) : ?>
<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
<?php echo $wp_query->post_title.'<br>';
<?php endwhile; ?>
<?php endif; ?>
ここに投稿のタイトルなどを表示したいのですが、上のようにしてみたところ何も表示されませんでした。投稿情報にアクセスするにはどうすればいいですか。
まず第一に、$wp_query
グローバル変数を使用して悪用しないでください。このグローバルはメインクエリ専用に予約されるべきです。競合を引き起こさないような他の変数を使用してください。
次に、生の WP_Post
プロパティ を使用しないでください。これらは生のままでフィルタ処理されていません。 WP_Query
はデフォルトでpostdataを設定します。これはテンプレートタグの使用を可能にします。
3番目に、 always WP_Query
のすべてのインスタンスをリセットして、同じページ上の他のクエリとの競合を回避します。
4番目に、この行<?php echo $wp_query->post_title.'<br>';
に構文エラーがあります。閉じているphpタグがありません
あなたはこのような何かにあなたのコードを書き直すことができます
$args = array(
'post_type' => 'post',
'posts_per_page' => $count,
'paged' => $paged,
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
the_title();
the_content();
}
wp_reset_postdata();
}
WP_Post
プロパティに直接アクセスする必要がある場合は、例えば
echo apply_filters( 'the_content', $query->post_content );
投稿内容を表示する
echo apply_filters( 'the_title', $query->post_title );
投稿のタイトルを表示します。投稿ステータスには、以下からアクセスできます。
$query->post_status
利用可能なすべてのプロパティの一覧を見る ここ
WP_Post
プロパティを使わずにこれらの情報を表示するためにループ中に利用できる テンプレートタグ があることを覚えておかなければなりません
コードにわずかなエラーがあります。ループを開始したら($wp_query->the_post();
を設定した後にこれを行います)、WordPressテンプレートタグを使用して投稿からコンテンツにアクセスし始めることができます。あなたがタイトルとコンテンツを見せたいのであれば、それはこのようになります:
<?php
$args = array(
'post_type' => 'post',
'posts_per_page' => $count,
'paged' => $paged,
);
$wp_query = new WP_Query( $args );
?>
<?php if ( $wp_query->have_posts() ) : ?>
<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
<h3><?php the_title(); ?></h3>
<p><?php the_content(); ?></p>
<?php endwhile; ?>
<?php endif; ?>
WP_Query
および templateタグ を読むことをお勧めします。