在PHP中执行此操作是一个糟糕的想法:
此页无法缓存随机排序extremely expensive 查询,包括创建临时数据库表和扫描,因为它必须复制整个posts表,然后随机重新排序posts,最后在销毁新表之前对其执行实际查询。这会导致资源耗尽攻击。例如,此命令将重复ping随机post URL。在足够多的计算机上运行足够多的时间,它将关闭您的数据库:
for i in `seq 1 20000`; do curl http://mywebsite.com/postname; done
如果您使用的是廉价的共享主机,那么在多个浏览器选项卡中同时调用URL可能足以引发问题。
更不用说重定向会发送HTTP标头,但代码会提前输出标记,因此标头已经发送,破坏了内容并触发PHP警告。
相反,可以执行按数据排序的常规查询,并将数据输出为JSON。然后在浏览器上的javascript中,随机选择其中一篇帖子并执行客户端重定向。
这样可以缓存页面,保护数据库,并且浏览器可以完成所有繁重的工作。数据库查询将为very 比较快
现在您的问题很简单,只需在列表中输出一点数据,在JS中从列表中随机选取一些内容,然后使用window.location= ...
重定向。无需WP知识