Dezvoltare WordPress: cum afișezi tipurile personalizate de postări prin WP_Query

Î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 prin register_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.

Lasă un comentariu