很多人在搭建WordPress的时候,文章固定结构包含了%postname%,而不是%post_id%,后面想改又怕麻烦。其实做好规范,改动也没什么影响的。
在 WordPress 中,如果你想将文章的别名(slug/permalink)从中文改为数字 ID,可以通过以下几种方式实现。
下面是具体操作方法:
✅ 方法一:修改固定链接结构(推荐)
登录 WordPress 后台。
- 进入菜单:设置 > 固定链接(Settings > Permalinks)。
- 选择自定义结构(Custom Structure)。
- 输入以下内容:/archives/%post_id%/
- 或简单地使用:/%post_id%/
- 保存更改。
这样你的网站文章链接就会变成:https://example.com/123/
♻️方法二:批量修改已有文章的别名(slug)
上述方法修改的是新生成的链接结构,但如果你之前的文章已经使用了中文别名,在固定链接中可能依然显示中文。可以通过插件或代码批量将旧文章的 slug 改为数字 ID。
🔔方法一:使用 SQL 批量替换(建议备份)
你可以进入数据库(通过 phpMyAdmin 或类似工具),执行如下 SQL 语句:
UPDATE wp_posts SET post_name = ID WHERE post_type = ‘post’ AND post_status = ‘publish’;
注意:wp_posts 表名中的 wp_ 前缀需根据你实际的表前缀调整。
🔔方法二:手动更改为 ID(适合文章较少)
查看该文章的 ID(可以在浏览器地址栏中看到,比如 post=123)。
在「别名」字段中,将现有内容手动改为这个数字,如:123,点击 更新 即可。
🔔方法三:通过函数自动设置 slug 为 ID(适合文章较多)
你可以将以下代码添加到你主题的 functions.php 文件中(或使用 Code Snippets 插件添加),自动在文章发布时将别名设置为文章 ID:
https://github.com/lingchenzi/blog/blob/main/wordpress/change_post_slug_to_id
//修改文章别名为文章id
function change_post_slug_to_id($post_id) {
$post = get_post($post_id);
if ($post->post_type == 'post' && $post->post_status == 'publish') {
$new_slug = $post_id;
remove_action('save_post', 'change_post_slug_to_id'); // 避免死循环
wp_update_post(array(
'ID' => $post_id,
'post_name' => $new_slug,
));
add_action('save_post', 'change_post_slug_to_id');
}
}
add_action('save_post', 'change_post_slug_to_id');
🚫 注意事项
-
如果你的网站已经上线,改动固定链接可能会影响 SEO 和已有链接。建议设置 301 重定向。
-
可以使用插件如 Redirection 来管理旧链接的跳转。