Obținerea ID-urilor pentru un tip de postare personalizat

20 oct. 2014, 15:20:13
Vizualizări: 49.7K
Voturi: 10

Am creat o postare personalizată 'case studies' care conține mai multe articole.

Doresc să obțin ID-urile fiecăreia dintre aceste postări pentru a manipula datele, dar în ciuda analizării unor subiecte similare, nu pot găsi o modalitate de a realiza acest lucru. Ceva de genul:

foreach post oftype custom, get the id

Creez o funcție pentru a afișa aceste informații în interfața de administrare, iată fragmentul de cod de mai jos.

function display_meta_box( $case_study ) 
{
    if (in_array('case_studies', get_post_types()))
    {
        ...obține ID-urile tuturor postărilor de tipul 'case_studies'...
    }
    ...efectuează alte operații cu ID-urile...
}
0
Toate răspunsurile la întrebare 2
0
13

Puteți obține un simplu array de ID-uri de CPT folosind get_posts cu parametrul 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

Am găsit baza răspunsului ascunsă în codex

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

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

Nu ai nevoie de echo cu the_title() și poți folosi și the_ID() în loc de echo get_the_id().

birgire birgire
20 oct. 2014 16:57:14

'basis' - afișat doar ca exemplu

myol myol
20 oct. 2014 16:59:25

Observă diferența între funcțiile the_* vs get_the_*. În majoritatea cazurilor este ca diferența dintre echo și return.

birgire birgire
20 oct. 2014 17:06:58

Interesant, în cazul meu a trebuit să folosesc get_the_* pentru a manipula informația în bucla while.

myol myol
20 oct. 2014 17:30:23

setează fields la ids în interogarea ta și vei primi înapoi doar un array de ID-uri, folosind semnificativ mai puțină memorie. probabil vei dori să setezi și posts_per_page la -1 pentru a obține toate articolele.

Milo Milo
20 oct. 2014 18:39:01

@Milo Mulțumesc, dar în acest caz am nevoie de titlurile fiecărui post personalizat returnat. Dacă aș returna ID-uri și apoi aș folosi get_the_title(id), performanța ar fi mai bună decât implementarea actuală?

myol myol
20 oct. 2014 18:56:05

Setează post_status la any dacă vrei să obții drafturi sau alte articole nepublicate. După cum a menționat @Milo, am setat și posts_per_page la -1 pentru a obține toate articolele.

David David
10 oct. 2017 07:57:05
Arată celelalte 2 comentarii