Ottenere gli ID di un tipo di post personalizzato

20 ott 2014, 15:20:13
Visualizzazioni: 49.7K
Voti: 10

Ho creato un post personalizzato 'case studies' che contiene diversi post.

Desidero ottenere gli ID di ciascuno di questi post per manipolare i dati, ma nonostante abbia esaminato discussioni simili, non riesco a trovare un modo per realizzarlo. Qualcosa del tipo:

per ogni post di tipo personalizzato, ottieni l'id

Sto creando una funzione per visualizzare queste informazioni nel backend, ecco lo snippet qui sotto.

function display_meta_box( $case_study ) 
{
    if (in_array('case_studies', get_post_types()))
    {
        ...ottieni gli ID di tutti i post di tipo 'case_studies'...
    }
    ...fai altre operazioni con gli ID...
}
0
Tutte le risposte alla domanda 2
0
13

Puoi ottenere un semplice array di ID di CPT utilizzando get_posts con il parametro fields.

$all_post_ids = get_posts(array(
    'fields'          => 'ids',
    'posts_per_page'  => -1,
    'post_type' => 'case_studies'
));
18 apr 2018 21:12:54
7
11

Trovato il fondamento della risposta sepolto nel codex

$args = array( 'post_type' => 'case_studies');

$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
    the_ID();
endwhile;
20 ott 2014 16:47:23
Commenti

Non hai bisogno di echo con the_title() e puoi anche usare the_ID() invece di echo get_the_id().

birgire birgire
20 ott 2014 16:57:14

'basis' - mostrato solo come esempio

myol myol
20 ott 2014 16:59:25

Nota la differenza tra le funzioni the_* e get_the_*. Nella maggior parte dei casi è come echo vs return.

birgire birgire
20 ott 2014 17:06:58

Interessante, nel mio caso ho avuto bisogno di utilizzare get_the_* per manipolare le informazioni all'interno del ciclo while.

myol myol
20 ott 2014 17:30:23

imposta fields a ids nella tua query e otterrai solo un array di ID, utilizzando significativamente meno memoria. Probabilmente vorrai anche impostare posts_per_page a -1 per ottenere tutti i tuoi post.

Milo Milo
20 ott 2014 18:39:01

@Milo Grazie ma in questo caso ho effettivamente bisogno dei titoli di ogni custom post restituito. Se restituissi gli ID e poi utilizzassi get_the_title(id) le prestazioni sarebbero migliori rispetto all'implementazione attuale?

myol myol
20 ott 2014 18:56:05

Imposta post_status a any se vuoi ottenere bozze o altri post non pubblicati. Come ha menzionato @Milo, ho anche impostato posts_per_page a -1 per ottenere tutti i post.

David David
10 ott 2017 07:57:05
Mostra i restanti 2 commenti