如何在WordPress自定义插件中创建不可删除的固定Slug前端页面
实现无实体页面的固定Slug前端页面
1. 注册自定义重写规则
添加重写规则,让WordPress识别你指定的固定slug(比如my-plugin-page),将请求导向插件的处理逻辑:
add_action('init', 'register_my_plugin_page_rewrite'); function register_my_plugin_page_rewrite() { add_rewrite_rule( '^my-plugin-page/?$', 'index.php?my_plugin_page=1', 'top' ); }
2. 注册自定义查询变量
让WordPress识别我们的自定义查询变量,用于后续判断请求是否指向目标页面:
add_filter('query_vars', 'add_my_plugin_page_query_var'); function add_my_plugin_page_query_var($vars) { $vars[] = 'my_plugin_page'; return $vars; }
3. 加载自定义模板
检测到目标请求时,加载插件内的模板文件输出页面内容:
add_filter('template_include', 'load_my_plugin_page_template'); function load_my_plugin_page_template($template) { if (get_query_var('my_plugin_page')) { $plugin_template = plugin_dir_path(__FILE__) . 'templates/my-plugin-page.php'; if (file_exists($plugin_template)) { return $plugin_template; } } return $template; }
4. 插件激活时刷新重写规则
确保重写规则生效,无需用户手动操作:
register_activation_hook(__FILE__, 'my_plugin_activate'); function my_plugin_activate() { register_my_plugin_page_rewrite(); flush_rewrite_rules(); } // 可选:插件停用后刷新规则恢复原状 register_deactivation_hook(__FILE__, 'my_plugin_deactivate'); function my_plugin_deactivate() { flush_rewrite_rules(); }
5. 编写模板内容
在插件目录下创建templates/my-plugin-page.php,写入页面内容(可兼容主题模板结构):
<?php /** * 插件自定义页面模板 */ get_header(); ?> <div id="primary" class="content-area"> <main id="main" class="site-main"> <h1>我的插件专属页面</h1> <p>此页面由插件直接生成,用户无法删除或修改slug</p> <!-- 在这里添加你的插件功能逻辑 --> </main> </div> <?php get_footer(); ?>
核心说明
- 无需在数据库创建实体页面,用户无法通过后台删除或修改页面slug
- 自定义slug可通过修改
add_rewrite_rule中的规则字符串调整 - 模板文件完全自定义,可调用WordPress的主题函数保持风格统一
内容的提问来源于stack exchange,提问作者jguiles
相关产品推荐
相关产品推荐

