类别页面上的重复帖子

时间:2019-02-06 作者:MMPL1

所以,我有archive.php 使用此部分代码的文件

<div class="column is-full is-three-quarters p-small">
    <?php
        while ( have_posts() ) : the_post();
            get_template_part( \'loops/loop\', \'archive\' );
        endwhile;
        else :
            get_template_part( \'template-parts/content\', \'none\' );
        endif;
    ?>
</div>
在文件中loop-archive.php 我有这样的东西

<?php
$args = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => -1,
    \'cat\' => \'3\'
);
$query = new WP_Query($args);

if ($query->have_posts()) :
while ($query->have_posts()) :
    $query->the_post();

    // set default featured image
    $thumb = get_field(\'post_thumb\');
    $post_thumb = ($thumb ? $thumb[\'url\'] : get_template_directory_uri() . \'/dist/images/default-post-featured.jpg\');

    ?>
    <div class="columns">
        <div class="column is-one-third">
            <div class="article-thumb">
                <?php echo $post_thumb ?>
            </div>
        </div>
        <div class="column is-two-third">
            <article class="content has-text-left">
                <div class="article-head">
                    <header>
                        <h3><?php echo the_title(); ?></h3>
                        <span>dodano: <?php echo get_the_date(\'d.m.Y\') ?></span>
                    </header>
                </div>
                <div class="article-body">
                    <?php echo the_excerpt(); ?>
                </div>
                <div class="article-foot">
                    <a href="<?php echo the_permalink(); ?>" class="button button__rounded button__gold">Więcej</a>
                </div>
            </article>
        </div>
    </div>
<?php
endwhile;
wp_reset_postdata();
else:
?>

<div class="col">
    <h5>Brak wyników spełniających kryteria wyszukiwania</h5>
</div>
这是可行的。但它会复制帖子。我有2个帖子,但循环显示4个帖子。我试着使用$do\\u not\\u复制技巧,但它对我不起作用。我的代码怎么了?如何避免帖子重复?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

好的,那么代码就是它应该做的。

在您的archive.php 您可以这样做:

while ( have_posts() ) : the_post();
    get_template_part( \'loops/loop\', \'archive\' );
所以对于每一篇文章(两篇)你都包括loops/loop-archive.php 文件在该文件中,您不仅显示来自全局循环的当前帖子,还可以创建自己的自定义循环。这篇文章再次遍历所有帖子(因为pre_get_posts 至-1。

因此,经过一些简化后,您的代码如下所示:

while ( have_posts() ) : the_post();
    // the part from get_template_part( \'loops/loop\', \'archive\' );
    $query = new WP_Query($args);

    if ($query->have_posts()) :
        while ($query->have_posts()) :
            $query->the_post();
            // display the post
是的,它显示了4个帖子,而不是2个。如果有3篇文章,它将显示9篇文章,而不是3篇——因为对于每一篇文章,你都会显示所有的文章。

相关推荐

Generating a perfect loop

所以我现在已经在这里坐了大约三个小时了,我不得不让这件事过去几个小时来好好睡一觉,同时我希望能得到你的帮助。我已经能够使用$wpdb->get\\u results从数据库中获取内容,并且能够将它们放入一个数组中,但是我想使用这些信息在循环中运行一个新的查询,以获取列表中的多个项目。我使用了本指南的一个变体https://stackoverflow.com/questions/45848249/woocommerce-get-all-orders-for-a-product 获取订单ID。现在,我已