Вы можете использовать тот же способ, что и при вызове функции mbf_admin_menu
. Сначала переместите функцию mbf_page()
в класс как public function
, а затем добавьте ее в аргумент обратного вызова add_submenu_page()
в качестве вызываемой функции в «синтаксисе массива»: array($this, 'mbf_page')
.
class Mediabank_Frontend {
function __construct() {
add_action('init', array($this, 'mbf_add_menu'));
}
private function init() {
$this->mbf_add_menu();
}
public function mbf_add_menu() {
add_submenu_page('options-general.php', 'Mediabank settings', 'Mediabank', 'manage_options', 'mediabank-settings', array($this, 'mbf_add_menu') );
}
public function mbf_page() {
echo '<div class="wrap"><h1>Settings</h1></div>';
}
}
Что array($this, 'function_name')
говорит WordPress (ну, PHP) - добавить function_name
из текущего класса вместо вызова его из общедоступной области действия функции.
Вы можете передавать функции обратного вызова в этом синтаксисе массива, в стандартном синтаксисе «имя функции» или даже в виде Закрытие / Анонимная функция :
add_submenu_page( 'parent', 'Title', 'Menu', 'cap', 'slug', 'function_name' ); // Get the globally available `function_name()` function.
add_submenu_page( 'parent', 'Title', 'Menu', 'cap', 'slug', array($this, 'function_name') ); // Get $CurrentClass->function_name() method
add_submenu_page( 'parent', 'Title', 'Menu', 'cap', 'slug', function(){ /* Do stuff */ return false; } ); // callback a defined-inline anonymous function