Получение ID записи внутри цикла WordPress при выводе ID страницы

13 мая 2014 г., 22:33:56
Просмотры: 23.3K
Голосов: 2

Прошло время с тех пор, как я использовал WordPress, и я пытаюсь работать с Advanced Custom Fields. Я пытаюсь вывести ID записи внутри цикла на странице, чтобы использовать get_field для вывода содержимого записи. $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; // конец цикла ?>

<?php endif; ?>
5
Комментарии

как ты делаешь запросы на посты на странице?

Milo Milo
13 мая 2014 г. 22:37:58

@Milo ой, возможно я этого не делаю, упс

Anders Kitson Anders Kitson
13 мая 2014 г. 22:46:58

Все, что мне нужно было - это query_posts( 'posts_per_page=5' ); давно не работал с WordPress, сейчас только JavaScript, спасибо

Anders Kitson Anders Kitson
13 мая 2014 г. 22:49:00

Если использовать echo get_the_id(), будут ли числа одинаковыми?

certainstrings certainstrings
13 мая 2014 г. 22:38:53

да, оба идентификатора относятся к странице, а не к записи

Anders Kitson Anders Kitson
13 мая 2014 г. 22:46:35
Все ответы на вопрос 3
0

Не используйте 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; // конец цикла. ?>
<?php endif; ?>

Потому что: get_the_ID()

22 окт. 2014 г. 16:56:41
0

Пожалуйста, не используйте query_posts()

Примечание: Эта функция не предназначена для использования в плагинах или темах. Как будет объяснено далее, существуют более эффективные и производительные способы изменения основного запроса. query_posts() — это чрезмерно упрощённый и проблематичный способ модификации основного запроса страницы путём его замены на новый экземпляр запроса. Это неэффективно (повторно выполняет SQL-запросы) и может полностью не работать в некоторых случаях (особенно часто при работе с пагинацией записей). Любой современный код WordPress должен использовать более надёжные методы, такие как использование хука pre_get_posts.

http://codex.wordpress.org/Function_Reference/query_posts

В вашем случае вы создаёте дополнительный цикл на странице, поэтому вам нужен новый объект 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 
  } // конец цикла.
}
13 мая 2014 г. 23:59:27
0

Используйте wp_query() с вашими параметрами вместо этого. Query_posts замедляет выполнение запросов. http://codex.wordpress.org/Class_Reference/WP_Query

13 мая 2014 г. 22:56:20