Intereting Posts
wp_generate_attachment_metadata для файлов без изображений как отображать пользовательский тип сообщения во внешнем интерфейсе Добавить код в контент определенной записи Как изменить шаблон страницы? Получение библиотеки jQuery для работы в WordPress & Avada Ячейки массивов и вставка изменения HTML в WP_Query Как добавить пользовательский скрипт в нижний колонтитул страницы входа? WordPress Permalinks не работает в Apache2 Ubuntu 14.04 Добавление пользовательских таксономий только к выбранным пользовательским типам Выберите страницу / шаблон из URL ссылки Если страница не существует, укажите другую страницу? Постоянная ссылка показывает мусорный характер Запретить «вкладчикам» редактировать свои собственные сообщения, как только они будут установлены в «Ожидающий просмотр», Можно ли обернуть поиск геоданных вокруг WP_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; }