数字帖子不响应wp_Reset_postdata()

时间:2015-08-17 作者:GBin

我正在制作一个循环,希望内容(来自两个单独的类别)显示如下:

1个大格式帖子,1个随机产品,2个小格式帖子,1个特色帖子。。。重复

为了实现这一点,我为整个页面编写了一个模板,其中包含一个父循环(尚未编写),然后为每个嵌套循环编写了4个模板(-large/random/small/feature)。循环模板将使用加载到父页面中include(locate_template(\'looptemplate.php\')); - 我需要使用此方法,以便传递变量($do_not_duplicate) 到每个循环。

我的问题是我不能numberposts 在每个循环模板之后重置,因此如果大格式模板使用参数numberposts => 1 然后,为了使小格式模板显示需要使用的2篇文章numberposts => 3. 这对于父循环的第一次迭代很好,但它是不可重复的。

下面是父页面模板的代码(注意,我还没有编写父循环,因为我仍在尝试用numberposts):

<?php $do_not_duplicate = array(); ?>

<div id="primary" class="content-area">

<div id="content" class="site-content" role="main">

<div class="largenews">

<?php include(locate_template(\'largenews.php\')); ?>

</div><div class="product">

<?php include(locate_template(\'productflash.php\')); ?>

</div><div class="smallnews">

<?php include(locate_template(\'smallnews.php\')); ?>

</div><div class="featurepost">

<?php include(locate_template(\'featurepost.php\')); ?>

</div>

</div><!-- #content -->

这是largenews的代码。php。(smallnews.php非常相似,但希望再显示2篇帖子)

<?php $args = array( \'numberposts\' => 1, \'category\' => \'35,1052\');
    $largepost = get_posts($args);
    foreach( $largepost as $post ) : setup_postdata($post);
        if (in_array($post->ID, $do_not_duplicate)) continue;
        array_push($do_not_duplicate, $post->ID);

//Code to format post

    endforeach;
wp_reset_postdata(); ?>
现在我已经尝试了numberposts, posts_per_page, showposts, rewind_posts(), wp_reset_postdata, 和wp_reset_query 我可以想象,但是numberposts 从第一个循环开始numberposts 第二个循环(以及将出现的任何进一步迭代)。

我还尝试使用$largepost->wp_reset_postdata(); 但我明白了:“致命错误:在非对象上调用成员函数wp\\u reset\\u postdata()”。

对于这个问题的长度,我深表歉意,但我希望我已经把我的问题说清楚了,并包括了所有相关信息。很抱歉,代码格式不可靠,我无法以任何其他方式使其工作!

1 个回复
最合适的回答,由SO网友:GBin 整理而成

@米洛的回答非常有效(见上面的评论)。

if (in_array($post->ID, $do_not_duplicate)) continue; 这意味着重复的帖子仍在循环中计数,尽管没有显示出来。

要修复此问题,请删除此行,并使用此参数从查询中排除重复的帖子:\'post__not_in\' => $do_not_duplicate.

感谢米洛的快速简洁回复。

结束

相关推荐

how do i make this loop work

抱歉,我是一个PHp初学者,我不知道为什么这个循环对我的标签不起作用。php页面欢迎任何帮助。<?php get_header(); ?> <div class=\"posts\"><!-- BLOG --> <!-- Shapes on sides --> <div class=\"shapes_left\"> </div> <div class=\"shape