如何更改查询,使图像在每次刷新页面时都按顺序更改

时间:2019-11-07 作者:dsftw

我正试图找出改变查询的最佳方式,以便每次刷新页面时图像都会发生变化。

查询按排序rand 目前代码如下所示:

$settings=array(  \'post_type\' => \'banner-up\', \'numberposts\' => 1, \'orderby\' => \'rand\' );    

query_posts( $settings);

if ( have_posts() ) : the_post();   

    $spacing=apply_filters(\'the_content\',get_the_content());

    echo \'<div class="top banner">\'.$spacing.\'</div><!--banner-->\'; 

endif; wp_reset_query();
我在PHP和总体编码方面都很差,所以如果有人能告诉我一些关于这方面的提示,执行交替查询的最佳方法是什么,我将不胜感激。提前感谢您!

1 个回复
SO网友:Tom J Nowell

您的代码功能正常,但有几个主要缺陷:

query\\u帖子

query_postswp_reset_query 如果使用了,我建议永远不要使用此功能,因为它有重大问题,并且会助长坏习惯。

如果要修改WordPress拉入的帖子,请使用pre_get_posts 筛选,不要用第二个替换主查询并加倍已完成的工作,请修改它。如果要为站点的一小部分创建新的子查询,请使用WP_Querywp_reset_postdataget_posts, 但请记住WP_Query 在内部,要求数据库随机订购物品的成本巨大。数据库必须获取整个posts表,随机洗牌以在内存中创建一个全新的表,然后在新表上运行查询。这至少和复制整个posts表一样昂贵。

因此,永远不要要求数据库随机排序,而是使用PHP进行排序。E、 g.要求10篇帖子,然后跳过前X篇帖子,其中X是通过rand, e、 g。$random = rand(1,10). 你可以抓住柱子WP_Query 通过获取$query->posts

\\u内容无需获取内容并像这样通过过滤器就可以将其放入变量中,变量是不必要的,并且会使事情变得过于复杂:

echo \'<div class="top banner">\';
the_content();
echo \'</div><!--banner-->\';

缓存

从根本上讲,这意味着您永远不能将浏览器缓存、CDN或页面缓存插件与此代码一起使用。浏览器缓存将始终显示它遇到的第一条横幅,CDN将缓存显示给访问者的第一条横幅,页面缓存也会这样做。

因此,避免随机显示内容,您希望相同的页面请求始终给出相同的结果。

这意味着您可能需要的任何“随机性”都必须在javascript中完成。因此,获取一些横幅图像,并让Javascript在浏览器中选择一个。

相关推荐

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

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