wordPressを使用して高度なカスタムフィールドを作成しようとしていて、投稿IDをページのループ内に出力しようとしているので、get_fieldを使用して投稿の内容を出力できます。 Ths $ post-> IDは私には投稿IDではなくページIDを与えるので間違った番号が出力されています、どうやって投稿IDを取得しますか?
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php $current_id = $post->ID ?>
<?php echo $current_id ?>
<h1><?php the_field('titleFart', $current_id); ?></h1>
<?php endwhile; // end of the loop. ?>
<?php endif; ?>
メインループで必要な場合はquery_posts
やWP_Query
を使わないでください。とにかくquery_posts
を使ってはいけません。
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php $current_id = get_the_ID(); ?>
<?php echo $current_id ?>
<h1><?php the_field('titleFart', $current_id); ?></h1>
<?php endwhile; // end of the loop. ?>
<?php endif; ?>
理由は: get_the_ID()
query_posts()
を使用しないでください
注: この関数はプラグインやテーマで使用するためのものではありません。後で説明するように、メインクエリを変更するためのより優れた、より高性能なオプションがあります。 query_posts()は、ページのメインクエリを新しいクエリインスタンスに置き換えることによって変更する、非常に単純で問題の多い方法です。これは非効率的で(SQLクエリを再実行する)、状況によっては完全に失敗する可能性があります(特に投稿ページ付けを扱うときによくあります)。最近のWPコードでは、この目的のためにpre_get_postsフックを使用するなど、より信頼性の高い方法を使用する必要があります。
あなたの場合は、ページ上に2次ループを作成しているので、必要なのは新しい WP_Query
オブジェクトです。
$q = new WP_Query(
array(
'posts_per_page' => 5
)
);
if ( $q->have_posts() ) {
while ( $q->have_posts() ) {
$q->the_post();
$current_id = $post->ID;
echo $current_id ?>
<h1><?php the_field('titleFart', $current_id); ?></h1><?php
} // end of the loop.
}
代わりにあなたのparamsでwp_query()を使ってください。 Query_postsはクエリを遅くします。 http://codex.wordpress.org/Class_Reference/WP_Query