Afișează tipul curent de postare personalizată
Am toate tipurile mele de postări personalizate listate împreună în format blog. Ceea ce încerc să fac este să afișez numele tipului de postare pentru fiecare articol.
Am încercat asta:
get_post_type_object('post');
echo $obj->labels->singular_name;
Dar afișează doar "Post" pentru tot în loc să afișeze numele tipului de postare personalizată

În interiorul buclei, deja aveți la dispoziție un obiect $post
, nu este nevoie să apelați get_post_type
sau alte funcții, această soluție ar trebui să funcționeze.
<?php echo $post->post_type; ?>
Sau, dacă preferați să utilizați get_post_type
, puteți simplifica sarcina funcției transmitându-i obiectul post pe care îl aveți deja (astfel încât nu va mai fi nevoie să preia postul, ci doar să extragă o proprietate din el).
<?php echo get_post_type( $post ); ?>
Altfel, get_post_type
va apela inutil get_post
pentru a prelua obiectul post (un obiect pe care îl aveți deja la dispoziție).
Sper că vă ajută..

Odată ce un articol este preluat din baza de date prin apelarea funcției get_post(), un apel repetat nu reprezintă o problemă serioasă. Totul este stocat în cache intern pe durata afișării paginii, singura suprasarcină fiind un apel rapid al funcției pentru a prelua obiectul din cache. În acest caz, get_post_type() nu face practic nimic în plus față de returnarea valorii $post->post_type, așa că optimizarea ta are sens, dar ar trebui probabil să includă un filtru sau ceva similar, caz în care utilizarea get_post_type() ar fi abordarea recomandată conform API-ului.

Citind documentația de la http://codex.wordpress.org/Function_Reference/get_post_type_object trebuie să transmiți tipul de postare personalizat ca argument!
Încearcă cu:
$obj=get_post_type_object('your-post-type');
echo $obj->labels->singular_name;
