web-dev-qa-db-ja.com

ページIDを出力するループ中に投稿IDを取得する

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; ?>
1
Anders Kitson

メインループで必要な場合はquery_postsWP_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()

2
aifrim

query_posts() を使用しないでください

注: この関数はプラグインやテーマで使用するためのものではありません。後で説明するように、メインクエリを変更するためのより優れた、より高性能なオプションがあります。 query_posts()は、ページのメインクエリを新しいクエリインスタンスに置き換えることによって変更する、非常に単純で問題の多い方法です。これは非効率的で(SQLクエリを再実行する)、状況によっては完全に失敗する可能性があります(特に投稿ページ付けを扱うときによくあります)。最近のWPコードでは、この目的のためにpre_get_postsフックを使用するなど、より信頼性の高い方法を使用する必要があります。

http://codex.wordpress.org/Function_Reference/query_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. 
}
1
s_ha_dum

代わりにあなたのparamsでwp_query()を使ってください。 Query_postsはクエリを遅くします。 http://codex.wordpress.org/Class_Reference/WP_Query

0
certainstrings