Wordpress Multiple Loop - PullRequest
       10

Wordpress Multiple Loop

0 голосов
/ 14 февраля 2011

Какое лучшее решение, когда у нас есть несколько циклов на одной странице?Я использую для основного цикла это:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php endwhile; endif; ?>

Теперь я пытаюсь добавить новый цикл на той же странице (в другом месте) для избранных сообщений в определенном названии категории, которая для васлучший выбор: («контент» только для примера)

1- Используйте get_posts ();

<?php global $post;
$args = array( 'category_name' => 'destaques' );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>

   "content"

<?php endforeach; ?>

2- Используйте WP_Query ();

<php $my_query = new WP_Query("category_name=destaques");
while ($my_query->have_posts()) : $my_query->the_post(); ?>

   "content"

<?php endwhile; ?>

3: Используйте query_posts ();

<?php query_posts( 'category_name=destaques' );
if (have_posts()) : while (have_posts()) : the_post(); ?> 

   "content"

<?php endwhile; endif; ?>

Что вы выбираете и почему?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 14 февраля 2011

Оптимальный выбор - get_posts ();

Вот рассуждения из справочника по функциям WordPress для запросов :

Функция query_posts () предназначена использоваться для изменения главной страницы только петля. Это не предназначено как означает создать вторичные петли на стр. Если вы хотите создать отдельный Петли за пределами основного, вы вместо этого следует использовать get_posts (). Использование query_posts () для циклов, отличных от основной может привести к вашему главному циклу становится неправильным и, возможно, отображать вещи, которые вы не были ожидая.

Функция query_posts () переопределяет и заменяет основной запрос для стр. Чтобы сохранить ваше здравомыслие, не используйте это для любой другой цели.

Функция query_posts () создает новый объект WP_Query и назначить его глобальная переменная wp_query. Функция get_posts () создает новый WP_Query объект без переопределения что-нибудь в глобальной области.

0 голосов
/ 15 февраля 2011

Я бы использовал номер 3. Проще читать и понимать.

0 голосов
/ 14 февраля 2011

Я не уверен насчет других, но мой выбор чаще всего или нет

<?php 
query_posts('showposts=1&cat=-48'); // our custom query
if ( have_posts() ) : while ( have_posts() ) : the_post();  // Start the loop
    $img = get_post_meta($post->ID, "postimage", $single = true);//any custom fields?
?>
    <a href="<?php the_permalink() ?>" title="Permanent Link to <?php the_title(); ?>">
      <img src="<?php echo $img; ?>" alt="<?php the_title(); ?>" />
    </a>
<?php
endwhile; endif;// End the Loop and Check for Posts
wp_reset_query(); // Reset the loop
?>
<div>stuff</div>
<?php 
query_posts('showposts=5&cat=5'); // our custom query
if ( have_posts() ) : while ( have_posts() ) : the_post();  // Start the loop
    $img = get_post_meta($post->ID, "postimage", $single = true);//any custom fields?
?>
    <h2>Title</h2>
    etc..etc..
<?php
endwhile; endif;// End the Loop and Check for Posts
wp_reset_query(); // Reset the loop
?>

это хорошо работает для моих нужд ...

...