Ho usato sia WP_Query che get_posts. In uno dei miei modelli della barra laterale, utilizzo il seguente ciclo per visualizzare i post di una particolare categoria utilizzando i campi personalizzati con una chiave di "category_to_load" che contiene il nome della categoria o slug della categoria. La vera differenza arriva dall'implementazione di entrambi i metodi.
Il metodo get_posts sembra così in alcuni dei miei modelli:
Qualora l'attuazione WP_Query assomiglia a questo:
$blog_posts = new WP_Query('showposts=15');
while ($blog_posts->have_posts()) : $blog_posts->the_post(); ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>" class="blog_post">
<div class="title">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<span class="date"><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></span>
</div>
<div class="entry">
<?php the_content(); ?>
</div>
<p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
</div>
<?php endwhile; ?>
La differenza principale è che non c'è bisogno di resettare la variabile globale $ post e inoltre non è necessario impostare i dati del post chiamando setup_postdata ($ post) su ogni oggetto post quando si utilizza WP_query. Puoi anche utilizzare la funzione lovely_posts() della funzione WP_Query, che non è disponibile usando get_posts().
Non si dovrebbe utilizzare la funzione query_posts() a meno che non si intenda realmente perché modifica il ciclo principale per la pagina. Vedi lo docs. Quindi, se stai creando una pagina speciale per visualizzare il tuo blog, chiamare query_posts potrebbe rovinare il ciclo della pagina, quindi dovresti usare WP_Query.
Sono solo i miei due centesimi. Il mio consiglio finale, la tua prima scelta dovrebbe essere WP_Query.
-Chris
fonte
2009-02-21 17:33:34
Come vi accedere alle pubblicare bambini (allegati, revisioni, ecc). Questa sarebbe una query separata? – meleyal
è possibile utilizzare la funzione get_children(): http://codex.wordpress.org/Function_Reference/get_children. O Puoi usare wp_list_pages - wp_list_pages ('title_li = & child_of ='. $ Post-> ID. '& Show_date = modificato & date_format = $ date_format'); ?>: http://codex.wordpress.org/wp_list_pages se vuoi una lista. -C –