Вызов метода WordPress из класса: вызов неопределенной функции

Я новичок в OOP с WordPress и могу использовать некоторую помощь при отладке этой проблемы. Я искал ответ и пытался отлаживать себя, но мог использовать руку. Я пытаюсь создать пункты меню администратора и их страницы, но я получаю следующую ошибку:

Whoops\Exception\ErrorException thrown with message "call_user_func_array() expects parameter 1 to be a valid callback, function 'create_admin_page' not found or invalid function name"

может ли кто-нибудь помочь указать мне в правильном направлении? Заранее спасибо!

Вот мой класс.

 namespace MyNamespace; class MyClass { public function __construct() { add_action('admin_menu', array($this, 'create_menu_item')); //add_action('admin_bar_menu', 'remove_wp_logo', 999); //add_filter( 'admin_bar_menu', 'change_howdy', 25 ); ddd($this->create_menu_item()); } //Get all pages public function get_all_pages() { $allpages = get_pages( array( 'post_type' => 'page', 'posts_per_page' => '-1') ); return $allpages; } //Get Parent Page ID protected function get_location_id() { $parents = get_page_by_title('Locations'); return $parents->ID; } //Get all locations excluding grandchildren protected function get_top_level_pages() { $children = get_page_children( $this->get_location_id(), $this->get_all_pages() ); $locations = array(); foreach ($children as $key => $value) { if ($this->get_location_id() == $value->post_parent) { $locations[$key] = $this->{$key} = $value; } } return $locations; } //Create top level menu item public function create_menu_item() { $locations = $this->get_top_level_pages(); foreach ($locations as $key => $value) { add_menu_page( $value->post_title, $value->post_title, 'manage_options', $value->post_name.'-admin-page.php', 'create_admin_page', //here is where I am calling the next function 'dashicons-location-alt', 6 ); } } //Create Admin Page -----should be it's own class? public function create_admin_page() { $children = get_page_children( $this->get_location_id(), $this->get_all_pages() ); ?> <div class="wrap"> <h2>Welcome Child Pages</h2> </div> <ul> <?php if(!empty($children)){ echo '<ul>'; foreach($children as $child){ echo '<li><a href="'.get_permalink($child->ID).'">'.$child->post_title.'</a></li>'; } echo '</ul>'; } ?> </ul> <?php } 

Solutions Collecting From Web of "Вызов метода WordPress из класса: вызов неопределенной функции"

На этой строке:

 add_action('admin_menu', array($this, 'create_menu_item')); 

Вы правильно create_menu_item метод create_menu_item текущего класса для аргумента обратного вызова функции add_action() . Вам просто нужно применить тот же принцип для обратных вызовов в функции add_menu_page() :

 add_menu_page( $value->post_title, $value->post_title, 'manage_options', $value->post_name.'-admin-page.php', array( $this, 'create_admin_page' ), // <-- Here 'dashicons-location-alt', 6 ); 

Это применимо к любой функции WordPress, которая имеет «обратный вызов» в качестве параметра. Здесь вы можете узнать больше о обратных вызовах в PHP.