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

WordPress MVC框架中add_menu_page回调函数不生效是什么原因?

问题根因
  • 回调函数的引用格式错误
    你当前定义的ideapro_scripts_page是MenuController类的内部方法,不属于全局作用域的函数。add_menu_page的第5个参数直接传入字符串ideapro_scripts_page时,WordPress会从全局作用域检索对应函数,检索不到就不会执行回调,因此页面没有任何输出。
  • 方法访问权限不规范
    ideapro_scripts_page没有显式声明访问修饰符,默认权限不符合调用要求时也会导致调用失败。
修复方案

修改MenuController.php中的代码,将回调改为类实例方法的标准调用格式,同时显式声明方法的public权限:

public function adminMenu()
{       
    add_menu_page(
        'Header & footer scripts', 
        'Site scripts', 
        'manage_options', 
        'ideapro-admin-menu', 
        [$this, 'ideapro_scripts_page'], // 替换为类实例方法回调格式
        'dashicons-editor-table', 
        200
    );
}

// 显式声明为公共方法
public function ideapro_scripts_page()
{
    ?>
        <div class="wrap">
            <h2>
                Update Scripts on the header and footer
            </h2>
        </div>
    <?php
}

WordPress回调规则说明:如果回调是类的实例方法,必须使用[实例对象, 方法名]的数组格式;如果是类的静态方法,使用[类名::class, 静态方法名]的格式,只有全局函数可以直接传入方法名字符串作为回调。

内容的提问来源于stack exchange,提问作者Temuujin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:54:03