Într-un articol anterior am discutat despre modul în care putem să definim mai multe tipuri de articole/pagini (Custom Post Types) în WordPress. Odată create aceste structuri de date, apare frecvent necesitatea de a le afișa separat în paginile sau secțiunile temei.
Cum procedăm dacă dorim să afișăm doar postările aparținând unui anumit tip de conținut definit anterior?
Interogarea postărilor personalizate prin WP_Query
Cea mai curată și sigură metodă este utilizarea clasei WP_Query pentru a inițializa o buclă de interogare dedicată:
<?php
$args = array(
'post_type' => 'aicivinetipul',
'post_status' => 'publish',
'posts_per_page' => 10,
);
$custom_query = new WP_Query($args);
if ($custom_query->have_posts()) : ?>
<ul>
<?php while ($custom_query->have_posts()) : $custom_query->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
Explicații tehnice și bune practici
- post_type: înlocuiește
'aicivinetipul'cu slug-ul tipului tău de postare personalizat (înregistrat anterior prinregister_post_type()). - post_status: parametrul
'publish'garantează că sunt afișate exclusiv articolele publicate, excluzând ciornele sau elementele private. - wp_reset_postdata(): apelarea acestei funcții la finalul buclei este esențială pentru a restabili interogarea globală (
$post) a paginii curente, evitând anomalii în șabloanele de pagină complexe.