如何强制显示“404 Not Found”错误

时间:2019-07-08 作者:David Snow

我有几个页面填充了数据库中非Wordpress表中的数据。https://pageURL/?asi_id=12345 使DB查找获得正确的数据。如果有人使用了错误的查询字符串,我希望生成404错误。当我发现问题时,我已经在生成标题之后很久了。我尝试了来自这个论坛和其他论坛的一些代码片段。它们导致“404模板”显示的状态代码仍然是200而不是404。我怀疑谷歌想要正确的状态码。

你知道我如何在WP循环的这一点上强制错误吗?

1 个回复
SO网友:Matthew Brown aka Lord Matt

简短的版本是,您需要更快地进行查找。正如注释中所指出的,404状态只能和标题一起发送。

有几种方法可以解决此问题。我会用一节课来做。该类将使用几个钩子,但最重要的是,其中一个钩子将在早期使用,例如“init”。那时我会让它知道是否需要它并进行查找。因此,我将存储在一个受保护的变量中。

然后,当需要输出数据时,我可以在类中使用另一个函数(称为方法)来处理输出(因为已经进行了查找)。

如果在发送任何内容之前很久查找失败,那么这将允许您响应404。

还有其他使用钩子和全局变量的方法,但我更喜欢类。

如果你需要帮助来掌握钩子,请在这里询问。

如果您想帮助理解类,那就是堆栈交换。

如果这个答案不够有用,迟早会有另一个答案。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。