¿Cómo puedo obtener el ID de una entrada desde un bucle WP_Query?

16 ene 2016, 01:51:30
Vistas: 148K
Votos: 16

Tengo un bucle WP_Query que obtiene entradas de cierto tipo. Estas entradas tienen meta datos personalizados, por lo que necesito poder obtener el ID de la entrada sin mostrarlo para poder mostrar los meta datos de esa entrada. ¿Cómo puedo obtener el ID de la entrada sin mostrarlo? Este es mi código:

$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
Comentarios

$post_id = get_the_ID(); se puede usar dentro del bucle. Esto recupera el ID de la publicación actual manejada por el bucle.

N00b N00b
16 ene 2016 03:49:46

@N00b deberías publicar eso como una respuesta.

Pieter Goosen Pieter Goosen
16 ene 2016 09:26:23

¿Estás intentando obtener categorías, o tienes un tipo de publicación personalizado llamado "category"? Si es lo primero, entonces deberías usar get_categories() si es lo segundo, entonces deberías leer esto: https://codex.wordpress.org/Reserved_Terms

Peter HvD Peter HvD
31 ago 2018 15:26:55
Todas las respuestas a la pregunta 2
0
30

get_the_ID() puede (únicamente) usarse dentro del loop.

Esta función obtiene el ID del post actual que está siendo procesado por el loop.


Puedes usarla directamente si solo la necesitas una vez:

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

También puedes almacenarla en una variable si la necesitas más de una vez:

$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 );

//etc

Referencia: get_the_ID()

16 ene 2016 10:24:53
0

La función get_the_ID() te proporcionará el ID de la publicación..,

            $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 ago 2018 10:42:40