Как получить ID записи из цикла WP_Query?

16 янв. 2016 г., 01:51:30
Просмотры: 148K
Голосов: 16

У меня есть цикл WP_Query, который получает записи определенного типа. У этих записей есть произвольные мета-данные, поэтому мне нужно получить ID записи без его вывода на экран, чтобы отобразить мета-данные этой записи. Как можно получить ID записи без его вывода? Вот мой код:

$menu_id = get_the_id();
        $category_args = array(
            'post_type' => 'category',
            'post_parent' => $menu_id
        );

        $menu_categories = new WP_Query($category_args);
        while($menu_categories->have_posts()) : $menu_categories->the_post(); 
            $category_id = ??????; ?>
        <h4><?php echo the_title(); ?></h4><?php 

            $dish_args = array(
                'post_type' => 'dish',
                'post_parent' => $category_id
            );
            $category_dishes = new WP_Query($dish_args);
            while($category_dishes->have_posts()) : $category_dishes->the_post(); 
                $dish_meta = get_post_meta(???????);?>
            <h6><?php echo the_title(); ?> - <?php echo $dish_meta[0]['price']; ?></h6>
            <p><?php echo the_content(); ?></p><?php
            endwhile;
        endwhile; 
3
Комментарии

$post_id = get_the_ID(); можно использовать внутри цикла. Это получает ID текущей записи, обрабатываемой циклом.

N00b N00b
16 янв. 2016 г. 03:49:46

@N00b тебе следует опубликовать это как ответ.

Pieter Goosen Pieter Goosen
16 янв. 2016 г. 09:26:23

Ты пытаешься получить категории, или у тебя есть пользовательский тип записи под названием "category"? Если первое, то тебе следует использовать get_categories(), если второе, то тебе следует прочитать это: https://codex.wordpress.org/Reserved_Terms

Peter HvD Peter HvD
31 авг. 2018 г. 15:26:55
Все ответы на вопрос 2
0
30

get_the_ID() можно использовать (только) внутри цикла (loop).

Эта функция возвращает ID текущей записи, обрабатываемой в цикле.


Вы можете использовать её напрямую, если она нужна вам только один раз:

$dish_meta = get_post_meta( get_the_ID(), 'dish_meta', true );

Или сохранить в переменную, если требуется использовать несколько раз:

$post_id = get_the_ID();

$dish_meta = get_post_meta( $post_id, 'dish_meta', true );

$drink_meta = get_post_meta( $post_id, 'drink_meta', true );

print_r( $post_id );

// и т.д.

Ссылка: get_the_ID()

16 янв. 2016 г. 10:24:53
0

Функция get_the_ID() возвращает ID записи...

            $args = array(

                          's' => $_POST['search_text'],
                          'posts_per_page' => -1,
                          'post_type' => 'address'

                     );

            $query = new WP_Query( $args );

            if ( $query->have_posts() ) {

               while ( $query->have_posts() ) {

                    $query->the_post();

                    $address_post_id = get_the_ID() ;
               }
            }
31 авг. 2018 г. 10:42:40