我想了解爲什麼我不能在自己的類中使用[$ this,'function']。
這工作:
的init.php
if (is_admin())
{
require (dirname (__FILE__) . '/inc/admin/Admin.php');
add_action('admin_menu', ['Mango\Admin', 'adminMenu']);
}
/inc/admin/Admin.php - 版本1(工作)
<?php namespace Mango;
class Admin
{
public function adminMenu()
{
//this is the main item for the menu
add_menu_page(
'Mango Settings', //page title
'Mango Settings', //menu title
'manage_options', //capabilities
'mango-settings', //menu slug
[ 'Mango\Admin', 'settingsPage' ] // LOOK HERE *******
);
}
public function settingsPage()
{
echo 'This is a test';
}
}
/INC/admin/Admin.php - 版本2(不工作)
<?php namespace Mango;
class Admin
{
public function adminMenu()
{
//this is the main item for the menu
add_menu_page(
'Mango Settings', //page title
'Mango Settings', //menu title
'manage_options', //capabilities
'mango-settings', //menu slug
[ $this, 'settingsPage' ] // LOOK HERE *******
);
}
public function settingsPage()
{
echo 'This is a test';
}
}
錯誤消息:Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /.../wp-includes/plugin.php on line 429
我真的不明白,爲什麼我不能用add_menu_page鉤註冊[ $this, 'settingsPage' ]
。當然,工作版本1正在創建Mango \ Admin類的第二個副本?
請問有誰能爲我揭開一些光明嗎?