通过PHP更新WordPress固定链接:后台设置菜单禁用后的解决方案
替代方案:无需后台「设置」菜单刷新WordPress固定链接(Flush Rewrite Rules)
我太懂这种憋屈了——刚折腾完自定义文章类型(CPT),结果后台的设置菜单被模板作者锁得死死的,连刷新固定链接的入口都找不到,翻遍代码还搜不到remove_menu_page('options-general.php')的痕迹。别慌,下面给你几个实用的替代方案,全靠flush_rewrite_rules()来解决问题:
1. 主题functions.php临时插代码(最简单上手)
直接在当前主题的functions.php末尾加一段临时代码,访问任意前端页面就会触发刷新,完事记得立刻删掉,不然每次加载都刷会拖慢网站:
// 临时刷新重写规则!访问任意页面后马上删除这段代码! add_action('init', function() { flush_rewrite_rules(); });
⚠️ 重要提醒:一定要在看到自定义文章类型链接正常后,把这段代码删掉!
2. 做个一次性临时插件(不碰主题文件更安全)
担心主题更新会覆盖代码?那就整个临时插件:
- 在
wp-content/plugins/目录新建文件夹flush-rewrite-temp - 里面新建
flush-rewrite-temp.php,内容如下:
<?php /* Plugin Name: 临时刷新重写规则 Description: 激活即刷新,完成后请立刻禁用删除 Version: 1.0 */ // 插件激活时执行刷新 register_activation_hook(__FILE__, function() { flush_rewrite_rules(); // 可选:激活后自动禁用插件,避免忘记删 deactivate_plugins(plugin_basename(__FILE__)); });
- 到后台插件菜单激活它,刷新完成后直接删掉这个插件就行,干净无残留。
3. WP-CLI命令行(服务器权限用户首选)
如果你能通过SSH登服务器,或者主机支持WP-CLI,这是最高效的方式,直接敲一行命令:
wp rewrite flush
回车搞定,完全不用碰代码,也不会留下任何隐患。
4. 临时PHP脚本(适合没WP-CLI又不想动主题插件的情况)
- 在网站根目录(和
wp-config.php同文件夹)新建flush-rewrite.php - 写入以下内容:
<?php require_once('wp-load.php'); flush_rewrite_rules(); echo '重写规则已刷新!请立即删除这个文件!';
- 浏览器访问
你的域名/flush-rewrite.php,看到提示后立刻删掉这个文件,防止被恶意利用。
额外小提示
- 刷新后记得测试自定义文章类型的链接是否正常,不行就多刷一次
- 以后修改CPT的参数后,还是需要重复这个操作刷新规则
- 关于找不到隐藏设置菜单的代码:可以全局搜索主题和插件里的
remove_submenu_page、add_filter('admin_menu', ...),有些模板会用用户权限判断或者CSS隐藏菜单,不一定直接用remove_menu_page
内容的提问来源于stack exchange,提问作者Alesis




