Obtener los IDs de un tipo de entrada personalizada

20 oct 2014, 15:20:13
Vistas: 49.7K
Votos: 10

He creado una entrada personalizada 'case studies' que tiene varias publicaciones.

Deseo obtener los IDs de cada una de estas publicaciones para manipular los datos, pero a pesar de mirar hilos similares, no puedo encontrar una manera de lograrlo. Algo como:

para cada publicación de tipo personalizado, obtener el id

Estoy creando una función para mostrar esta información en el panel de administración, aquí está el fragmento de código:

function display_meta_box( $case_study ) 
{
    if (in_array('case_studies', get_post_types()))
    {
        ...obtener los IDs de todas las publicaciones de tipo 'case_studies'...
    }
    ...hacer otras cosas con los IDs...
}
0
Todas las respuestas a la pregunta 2
0
13

Puedes obtener un array simple de IDs de CPTs utilizando get_posts con el parámetro fields.

$all_post_ids = get_posts(array(
    'fields'          => 'ids', // Solo obtener IDs
    'posts_per_page'  => -1,    // Todos los posts
    'post_type' => 'case_studies' // Tipo de post personalizado
));
18 abr 2018 21:12:54
7
11

Encontré la base de la respuesta enterrada en el codex

// Argumentos para consultar posts del tipo 'case_studies'
$args = array( 'post_type' => 'case_studies');

// Crear nueva consulta WP_Query
$loop = new WP_Query( $args );

// Iniciar loop para mostrar los posts
while ( $loop->have_posts() ) : $loop->the_post();
    // Mostrar el ID de cada post
    the_ID();
endwhile;
20 oct 2014 16:47:23
Comentarios

No necesitas usar echo con the_title() y también puedes usar the_ID() en lugar de echo get_the_id().

birgire birgire
20 oct 2014 16:57:14

'basis' - solo se muestra como ejemplo

myol myol
20 oct 2014 16:59:25

Observa la diferencia entre las funciones the_* y get_the_*. En la mayoría de los casos es como la diferencia entre echo y return.

birgire birgire
20 oct 2014 17:06:58

Curiosamente, en mi caso, necesité usar get_the_* para manipular la información dentro del bucle while.

myol myol
20 oct 2014 17:30:23

configura fields como ids en tu consulta y obtendrás solo un array de IDs, usando significativamente menos memoria. Probablemente también quieras configurar posts_per_page como -1 para obtener todos tus posts.

Milo Milo
20 oct 2014 18:39:01

@Milo Gracias, pero en este caso realmente necesito los títulos de cada custom post devuelto. Si devolviera IDs y luego usara get_the_title(id), ¿el rendimiento sería mejor que la implementación actual?

myol myol
20 oct 2014 18:56:05

Establece post_status como any si deseas obtener borradores u otras publicaciones no publicadas. Como mencionó @Milo, también configuro posts_per_page como -1 para obtener todas las publicaciones.

David David
10 oct 2017 07:57:05
Mostrar los 2 comentarios restantes