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

WordPress本地项目中如何隐藏URL中的文章ID?

解决WordPress自定义URL隐藏文章ID的问题

问题分析

你当前的代码依赖文章ID匹配重写规则,因此必须在URL中保留ID才能正常访问内容。要隐藏ID,需要修改链接生成逻辑和重写规则,改用文章别名(post_name)查询内容,同时确保别名唯一性。

代码修改步骤

1. 修改链接生成函数

去掉URL中的ID部分,同时修正原代码中错误的文章类型判断逻辑(原代码错误地将文章别名与文章类型slug做对比):

function mycustomname_link_p($post_link, $post = 0) {
    // 检查当前文章类型是否在目标数组中
    if (in_array($post->post_type, $GLOBALS['array_p'])) {
        return home_url('nature/posts/' . $post->post_name . '/');
    }

    return $post_link;
}
add_filter('post_type_link', 'mycustomname_link_p', 10, 2);

2. 修改重写规则函数

更新重写规则,让WordPress通过文章别名和类型查询内容,而非ID;同时避免在init钩子中频繁刷新规则(会影响性能):

function mycustomname_rewrites_init_p(){
    foreach ($GLOBALS['array_p'] as $post_type) {        
        add_rewrite_rule(
            'nature/posts/([^/]+)/?$',
            'index.php?post_type=' . $post_type . '&name=$matches[1]',
            'top'
        );
    }
}
add_action('init', 'mycustomname_rewrites_init_p');

关键注意事项

  • 刷新重写规则:修改代码后,登录WordPress后台,进入「设置」→「固定链接」,直接点击「保存更改」即可自动刷新重写规则,无需手动调用flush_rewrite_rules()。
  • 别名唯一性:WordPress默认会为重复标题的文章自动添加别名后缀(如my-post-2),确保别名唯一;如果手动修改别名导致重复,会出现404或跳转到第一个匹配的文章。
  • 数组内容验证:确保$GLOBALS['array_p']中存储的是目标文章类型的slug(比如你的persona_pubblica),而非文章别名。

内容的提问来源于stack exchange,提问作者Francesco Rossi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:22:24