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

WordPress插件多类拆分报错:非对象上下文使用$this

解决WordPress插件中“Using $this when not in object context”错误

错误根源

你在Settings类的register_pages方法里,用静态类名的方式注册钩子回调:

add_action('admin_menu', array('Settings', 'add_admin_menu'));

这种写法会让WordPress以静态方法的形式调用add_admin_menu,但这个方法里依赖$this访问实例属性admin_pages,静态调用时没有对象上下文,所以触发钩子时就会抛出错误。

修复步骤

把钩子回调的写法改成传入当前对象实例,也就是将array('Settings', 'add_admin_menu')替换为array($this, 'add_admin_menu')。这样WordPress会以对象方法的形式调用add_admin_menu,就能正常访问$this指向的实例属性了。

修改后的register_pages方法代码:

public function register_pages(){
    if( !empty( $this->admin_pages ) ):
        add_action('admin_menu', array($this, 'add_admin_menu'));
    endif;
}

完整修正后的Settings类

class Settings {
    
    public $admin_pages = array();
    public $admin_subpages = array();
    
    
    public function __construct(){
        $this->admin_pages = array(
            array(
                'page_title'  => 'Dashboard',
                'menu_title'  => 'Dashboard',
                'capability'  => 'manage_options',
                'menu_slug'   => SS_PLUGIN,
                'callback'    => 'dashboard_template',
                'icon_url'    => 'dashicons-store',
                'position'    => 55
            )
        );
        
    }

    public function register_pages(){
        if( !empty( $this->admin_pages ) ):
            add_action('admin_menu', array($this, 'add_admin_menu'));
        endif;
    }
    
    public function add_admin_menu(){
        foreach( $this->admin_pages as $page ):
            add_menu_page (
                $page['page_title'],
                $page['menu_title'],
                $page['capability'],
                $page['menu_slug'],
                $page['callback'],
                $page['icon_url'],
                $page['position']
            );
        endforeach; 
    }
    
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:15:34