如何仅在slug为t5-demo的插件菜单页面加载特定PHP代码
仅在特定WordPress菜单页面加载PHP代码的方法
有几种实用的方式可以实现仅在slug为t5-demo的菜单页面中加载指定PHP代码:
利用
add_menu_page返回的钩子名称add_menu_page会返回当前菜单页面的钩子标识,你可以基于这个钩子绑定自定义代码,确保代码只在目标页面执行:$hook = add_menu_page( 'T5 Demo', // page title 'T5 Demo', // menu title 'manage_options', // capability 't5-demo', // menu slug 'my_render_page' // callback function ); // 绑定到load钩子,页面加载时触发自定义代码 add_action( "load-$hook", 'my_custom_php_logic' ); function my_custom_php_logic() { // 这里写入你要执行的PHP代码 // 示例:处理表单提交、初始化数据等 if ( isset( $_POST['t5_demo_action'] ) ) { // 执行表单处理逻辑 } }通过
get_current_screen()检查当前页面
借助WordPress的get_current_screen()函数,你可以在后台初始化钩子中判断当前页面是否为目标菜单页面,再执行代码:add_action( 'admin_init', 'run_code_on_t5_demo_page' ); function run_code_on_t5_demo_page() { $current_screen = get_current_screen(); // 验证当前页面的screen ID是否匹配目标slug if ( $current_screen && $current_screen->id === 't5-demo' ) { // 执行你的自定义PHP代码 $demo_setting = get_option( 't5_demo_setting' ); // 基于配置做后续处理 } }直接在页面渲染回调中添加代码
如果代码是页面渲染相关的逻辑,直接把代码写在菜单页面的回调函数my_render_page里即可,这样代码自然只会在该页面加载时运行:function my_render_page() { // 先执行自定义PHP逻辑 $custom_content = generate_t5_demo_content(); // 自定义内容生成函数 // 再渲染页面结构 ?> <div class="wrap"> <h1><?php echo esc_html( get_admin_page_title() ); ?></h1> <div class="demo-content"> <?php echo wp_kses_post( $custom_content ); ?> </div> </div> <?php }
内容的提问来源于stack exchange,提问作者Mohsen
相关产品推荐
相关产品推荐

