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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:10:40