Intereting Posts
Функция, которая удаляет теги HTML <div> и </ div> из строки? Удалить действие из плагина на другом плагине Добавить значения CPT в базу данных Получить XAMPP для автоматического перенаправления на мой сайт Как решить проблему производительности, вызванную пользовательским типом публикации сообщений с 20k + пользовательскими стандартами таксономии Как загрузить изображение профиля пользователя из frontend в wordpress? Изменить каталог загрузки файлов PDF Пользовательский метабокс с переменным количеством полей Вычисления в functions.php Использовать шаблон страницы для пользовательского контента $ _GET Получить список пользовательских сообщений для каждого короткого кода категории Добавление данных в массив в usermeta и отображение его в цикле WP_query исключает сообщения в формате Медленный WP_Query с 'OR' на meta_query защищать отправленные пользователем сообщения

edit-tags.php в меню администратора плагинов скрывается, когда активна страница

Для плагина, который я создаю, я добавил подменю в качестве дочернего элемента в пользовательский элемент главного меню в admin. Страница подменю – это страница edit-tags.php . Это отображается в соответствии с пунктом главного меню. При щелчке по этому элементу подменю пользователь берется на правильную страницу, однако элемент главного меню сбрасывается обратно, скрывая текущее открытое подменю.

Мое первоначальное ощущение состоит в том, что атрибут родительского slug неверен, но в других подменю, которые я добавил, используют один и тот же родительский атрибут slug, и они работают правильно. Мне явно не хватает какой-либо опции в функции add_submenu_page() , но я не могу понять, что.

Вот как я регистрирую подменю:

 $this->plugin_screen_dashboard = add_submenu_page( $this->plugin_slug, // Parent slug __( 'Subscriber Lists', $this->plugin_slug ), // Page title __( 'Subscriber Lists', $this->plugin_slug ), // Menu title 'manage_options', // Capability 'edit-tags.php?taxonomy=subscriber_list&post_type=subscriber' // Menu slug ); 

–Редактировать–

Вот как я регистрирую элемент главного меню:

 $this->plugin_screen_hook_suffix = add_menu_page( __( 'My Plugin', $this->plugin_slug ), // Page title __( 'My Plugin', $this->plugin_slug ), // Menu title 'manage_options', // Capability $this->plugin_slug, // Menu slug array( $this, 'display_plugin_admin_page' ), // Function 'dashicons-plus-alt' // Icon url ); 

Мне удалось решить это с помощью Javascript, чтобы «открыть» элемент меню, когда на странице редактирования тегов в плагине.

Соответствующий файл PHP плагина

 $screen = get_current_screen(); // Check we're only on the edit-tags page in the plugin if ('edit-tags' === $screen->base && 'subscriber' === $screen->post_type) { wp_enqueue_script( $this->plugin_slug . '-subscriber-edit-tags-script', plugins_url('assets/js/subscriber-edit-tags.js', __FILE__ ), array('jquery') ); } 

подписчик-edit-tags.js (с использованием jQuery)

 (function ( $ ) { /** * File is called only when on edit tags under subscriber post type */ $('.toplevel_page_my_plugin') .removeClass('wp-not-current-submenu') .addClass('wp-has-current-submenu wp-menu-open') .find('li').has('a[href*="edit-tags.php"]') .addClass('current'); }(jQuery)); 

У меня была аналогичная проблема, и я смог разрешить неправильное поведение меню, используя фильтр parent_file. $ parent_file устанавливается в файле /wp-admin/edit-tags.php, но его необходимо изменить на основе вашего варианта использования.

 add_filter('parent_file', 'filter_subscriber_menu'); function filter_subscriber_menu($file) { $screen = get_current_screen(); if ('edit-tags' === $screen->base && 'subscriber' === $screen->post_type) { // in my case I drilled down to if($screen->id...); I used what you posted in your if clause above $file = {$this->plugin_slug}; //probably need to set this as a string; for the parent slug represented by $this->plugin_slug ; } return $file; }