iVampireSP 的物语

与所有美好的存在又多了一年的物语

改进 WordPress 当搜索不到内容时返回 200 的问题

解决 WordPress 搜索不存在的内容时返回 200 的问题。

起因

之前看到群友们在讨论 WordPress 这方面的问题,以及看到了这篇文章

推断

这个可能是直接到搜索引擎提交链接导致的。提交一个符合网址的搜索链接,然后让搜索引擎抓取。

但是 WordPress 搜索不到内容,还返回了 200,搜索引擎认为这个网址是有效的,就爬取了页面。

解决

既然 WordPress 搜索不到内容,那我们就不让它返回 200 就行了。

我们可以用 WordPress 的 template_redirect Hook,然后获取搜索页面,随后判断是否搜索到了内容,如果没有,那就返回 404。

代码

function search_404_fix_template_redirect()
{
    if (is_search()) {
        global $wp_query;
        
        if ($wp_query->found_posts == 0) {
            status_header(404);
        }
    }
}

add_action('template_redirect', 'search_404_fix_template_redirect');

你可以将上面的代码加入到主题的 functions.php 中。

如果你懒得加,可以到 WordPress 后台来使用以下方法。

插件

你也可以选择到 WordPress 后台,下载,安装并启用这个插件。

效果

可以看到,现在顺利的返回了 404。

但是如果主题使用了 Pjax,返回 404 的时候可能页面会刷新一下。

3 条回复

  1. […] WordPress搜索结果为空时返回200状态码(这是什么?) […]

  2. ヾ(≧∇≦*)ゝ

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注