Intereting Posts
Узнайте последние 7 дней загрузки изображений, на прошлой неделе загрузили изображение из галереи и отобразите их на разных страницах Почему я не могу войти в Dashboard после добавления себя к администратору через phpMyAdmin? Гостевые авторы, вроде Википедии, но более тематические Скрыть непосредственно просмотр содержимого для пользовательского типа сообщения Автоматическая отправка результатов формы конкретному подписчику woocommerce ребенок типа сообщения (пользовательский) вызывать пользовательское действие после удаления учетной записи Использование 'posts_where' в запросе с настраиваемым полем wp.media добавить контекст Отладка медленного WordPress Theme Customizer (любой параметр похож на Query Monitor)? создать список пользователей для конечных пользователей по определенной категории Я пытаюсь использовать API расширения группы в BuddyPress, но продолжаю получать фатальную ошибку Итеративно добавьте вспомогательные короткие коды в php-массив «Is_new_day ()» альтернатива в течение многих лет? Использование add_action перед add_filter в плагине?

Вызов метода 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.