WordPress多圈

时间:2011-10-17 11:13:35

标签: wordpress loops

我在尝试在WordPress中构建多个循环时感到非常沮丧。我看过很多篇文章 - 我做错了什么。我将以下内容放在loop.php文件中(因为我已在此构建了主页)...

<!--Loop 1-->
<?php global $query_string; // required
$posts = query_posts($query_string.'category_name=news&posts_per_page=3');?>

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

<!--Loop 2-->
<?php wp_reset_query(); // reset the query ?>
<?php global $query_string2; // required
$posts = query_posts($query_string2.'category_name=jobs&posts_per_page=3');?>

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

6 个答案:

答案 0 :(得分:1)

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

  // your output html   

<?php endwhile; ?>

您已嵌套循环(缺少endwhile)。

答案 1 :(得分:0)

你不能只是发明一个变量“query_string2”并期望它起作用;)

试试这个:

<!--Loop 1-->
<?php
global $query_string; // required
$posts = query_posts($query_string.'category_name=news&posts_per_page=3');?>

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

<!--Loop 2-->
<?php wp_reset_query(); // reset the query ?>
<?php 
$posts = query_posts($query_string.'category_name=jobs&posts_per_page=3');?>

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

如果这不起作用(我不记得wp_reset_query()是否重置了$query_string全局,请尝试以下方法:

<?php
global $query_string; // required
$query_string_backup = $query_string;
$posts = query_posts($query_string.'category_name=news&posts_per_page=3');?>

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

<!--Loop 2-->
<?php wp_reset_query(); // reset the query ?>
<?php 
$posts = query_posts($query_string_backup.'category_name=jobs&posts_per_page=3');?>

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

答案 2 :(得分:0)

这将有效:

<?php
    global $query_string;        //make sure these are in the correct format for post queries
    global $query_string1;

    // First loop
    $first_loop = new WP_Query( $query_string.'category_name=news&posts_per_page=3');

    while ( $first_loop->have_posts() ) : $first_loop->the_post() :
        // do your thing
        // e.g: $first_loop->the_content();
    endwhile;


    // second loop
    $second_loop = new WP_Query( $query_string1.'category_name=news&posts_per_page=3');

    while ( $second_loop->have_posts() ) : $second_loop->the_post() :
        //do your thing
    endwhile;

    // Reset Post Data 
    wp_reset_postdata();

?>

答案 3 :(得分:0)

我可以提供帮助,但我认为首先,我应该理解一个基本原则:你要做的是什么?你的目标是什么?为什么你认为你需要嵌套循环?

这将有助于我更正确地提供帮助。

答案 4 :(得分:0)

我用下面的代码解决了这个问题,我把它放在一个页面模板中(我的朋友建议最好不要单独使用loop.php)

<?php $custom_query = new WP_Query('category_name=news'); // only News category
while($custom_query->have_posts()) : $custom_query->the_post(); ?>

<h2><?php the_title(); ?></h2>
<?php the_content();?>
<?php endwhile; ?>

<?php wp_reset_postdata(); // reset the query ?>

<?php $custom_query = new WP_Query('category_name=jobs'); // only Jobs category
while($custom_query->have_posts()) : $custom_query->the_post(); ?>

<h2><?php the_title(); ?></h2>
<?php the_content();?>
<?php endwhile; ?>

答案 5 :(得分:0)

有一个名为rewind_posts()的函数会回绕循环帖子,以便让您在同一页面的不同位置重复使用相同的查询

https://codex.wordpress.org/Function_Reference/rewind_posts