自定义查询上的随机项目在本地工作,但不在现场

时间:2021-08-09 作者:Jorge Monte

我有一个项目,其中包含一个按钮,用于生成指向随机自定义帖子项的链接。

我进行了如下自定义查询:

<div class="content">
            <?php 

            $argsRandItem = array(
                \'post_type\' => \'participant\',
                \'posts_per_page\' => 1,
                \'orderby\' => \'rand\'
            );

            $queryRandItem = new WP_Query($argsRandItem);

            if ($queryRandItem->have_posts() ) : 
                while ( $queryRandItem->have_posts() ) : $queryRandItem->the_post();  ?>
                
                <a class="btn_blue" href="<?php the_permalink(); ?>">Discover a Project</a>
                <p><?php the_title(); ?></p>
                <hr>

               <?php
                    endwhile;  wp_reset_postdata();
                endif;  ?>
        </div>
最奇怪的是,该解决方案在我的本地环境中运行良好,甚至在pre-prod服务器上也运行良好。然而,当网站在线直播时,按钮总是返回一个指向1个特定帖子的链接(无论是否巧合,该自定义帖子类型列表上显示的第一个帖子)。

我无法想象发生这种情况的原因是什么。live版本发布了足够多的项目。这是随机自定义Post类型元素上的常见错误吗?

2 个回复
SO网友:vancoder

我的猜测是,您的结果会缓存在生产环境中。

尝试通过将其添加到查询参数来绕过缓存:

\'cache_results\'  => false,
请参见https://developer.wordpress.org/reference/classes/wp_query/#caching-parameters

SO网友:Jorge Monte

我才意识到发生了什么。在我后来访问过的live版本网站上,他们使用的是WP引擎,其中一种高级配置是;允许按RAND排序()”;,已禁用。仅仅启用它就解决了这个问题。

enter image description here

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post