You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress Waterlava主题中屏蔽未使用的URL

解决方案

方法1:通过主题函数拦截归档请求并返回404

在Waterlava主题的functions.php文件末尾添加以下代码,直接拦截作者、分类这类归档页面的请求,强制返回404错误:

// 拦截作者归档页面
add_action('template_redirect', function() {
    if (is_author()) {
        global $wp_query;
        $wp_query->set_404();
        status_header(404);
        get_template_part(404);
        exit();
    }
});

// 拦截分类归档页面
add_action('template_redirect', function() {
    if (is_category()) {
        global $wp_query;
        $wp_query->set_404();
        status_header(404);
        get_template_part(404);
        exit();
    }
});

// 可选:拦截标签归档页面
add_action('template_redirect', function() {
    if (is_tag()) {
        global $wp_query;
        $wp_query->set_404();
        status_header(404);
        get_template_part(404);
        exit();
    }
});

这段代码会在请求进入模板加载阶段前就拦截,直接让这些无效URL返回404页面,无法正常访问。

方法2:清理默认分类并禁用作者URL生成

  • 删除默认分类:进入WordPress后台「文章」→「分类目录」,把「未分类」下的所有内容(如果有的话)转移后,直接删除该分类,/category/uncategorized/这个URL就会自动失效。
  • 禁用作者页面生成:如果网站没有多作者需求,在functions.php中添加以下代码,彻底禁止作者相关URL的生成和访问:
// 移除所有页面中的作者链接
add_filter('author_link', '__return_false');

// 拦截前台的作者查询请求
add_action('pre_get_posts', function($query) {
    if ($query->is_author && !is_admin()) {
        $query->set_404();
    }
});

为什么修改template-loader.php无效?

你之前注释template-loader.php里的$tag_templates数组没用,是因为这个文件仅负责匹配并加载对应模板。即使你注释了模板获取函数,WordPress仍会自动降级使用默认模板(比如archive.php、index.php)渲染页面,所以这些URL依然能正常打开。正确的逻辑是在请求到达模板加载环节前,就拦截并标记为404。


内容的提问来源于stack exchange,提问作者Aadee Maanav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:40:48