在WPEngine托管的网站上随机显示帖子?

时间:2015-04-04 作者:Tim

我知道WPEngine将允许您在仪表板中启用“allow ORDER BY RAND()”设置,但我需要找到一种替代方法来避免性能问题。

我有一个自定义的帖子类型,可以用WP_Query 但我需要一种方法来限制它显示10个随机帖子而不使用。

\'orderby\' => \'rand\'

1 个回复
SO网友:kovshenin

你说得对,RAND() 是一个性能杀手,几乎每次都涉及到一个完整的表扫描,如果你在WordPress中有大量帖子,那将是一场噩梦。

因此,与其显示随机帖子,不如显示看似随机的帖子,但实际上并非如此。下面是一个简单的示例:

您可以查询20篇文章的总文章数,偏移量为1到(total-20)之间的随机数,用PHP获得

查询将减少随机性,速度更快,因为您没有RAND() 但使用OFFSET 相反具有WP_Query 这可以方便地与max_num_pages, posts_per_pagepaged 参数。

最后,由于您获得了20篇帖子,对于在不到一个小时内刷新页面不超过20次的访问者来说,步骤4中的结果似乎非常随机。

还值得注意的是,如果您想绕过页面缓存,可以将所有20篇帖子传递给JavaScript,并使用JS随机选择一篇。

结束

相关推荐

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

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