add_submenu_page 在 WordPress 中

add_submenu_page in WordPress

在 WooCommerce 中使用 add_submenu_page 创建新子菜单时,我收到“无法修改 header 信息 - header 已发送”。 add_submenu_page如下:

    public function slp_add_menu_item() {
        add_submenu_page(
            'woocommerce',
            'Shipping Locations',
            'Shipping Locations',
            'manage_options',
            'slp_add_states',
            array( $this->slp_settings_page() ),
        );
    }

将其更改为以下内容会删除“无法修改 header 信息 - header 已发送”错误,但无法正确呈现回调函数:

    public function slp_add_menu_item() {
        add_submenu_page(
            'woocommerce',
            'Shipping Locations',
            'Shipping Locations',
            'manage_options',
            'slp_add_states',
            array( $this, 'slp_settings_page' ),
        );
    }

slp_settings_page 回调函数反过来呈现 WP_List_Table 的实例(尽管在上面的屏幕截图中出现,它不是分类法)。 add_submenu_page 是通过 admin_menu 挂钩添加的,没有任何优先级。

对这里发生的事情有什么想法吗?我似乎无法理解它:(

第一个代码块是错误的。根据文档,最后一个参数应该是可调用的。第一个块直接执行函数并将结果存储在数组中(顺便说一下,结果是null)。因此,将其作为可调用对象传递是行不通的。

我不知道为什么第二个块不能正常工作。也许代码块在错误的时间执行,也许其他地方不对劲。