Intereting Posts
одинарная кавычка в форме контакта 7 ошибка ввода поля ввода при отправке формы Получение ошибки 502 при использовании настраиваемого фильтра сообщений Как добавить ящик автора под сообщением? местные проблемы с блогами wordpress Можно ли вставить страницу в сообщение в зависимости от категории сообщения Почему комментарии по умолчанию устарели? Реализация backbone.js для извлечения сообщений категории с использованием JSON API Выйти из системы и удалить файлы cookie с клиентской стороны? Создание фидов событий с вспомогательными страницами / сообщениями для каждого события ajax для фильтрации сообщений по категориям в циклах wordpress Внедрение расширенных обложек функций add_ * Таксономия переписывает разбиение на страницы 404 Измените значение настраиваемого поля после X секунд. Как я могу начать работу на моем сайте? WooCommerce получает класс доставки продукта либо из идентификатора продукта, либо из заказа после завершения заказа

Подсветка страниц подменю admin

Вот текущее меню / подменю моего плагина:

add_menu_page('Sunshine', 'Sunshine', 'sunshine_manage_options', 'sunshine_admin', 'sunshine_dashboard_display', plugins_url( 'assets/images/sunshine-icon.png' , $plugin_dir_path )); add_submenu_page('sunshine_admin', __('Dashboard','sunshine'), __('Dashboard','sunshine'), 'sunshine_manage_options', 'sunshine_admin', 'sunshine_dashboard_display'); add_submenu_page('sunshine_admin', __('Settings','sunshine'), __('Settings','sunshine'), 'sunshine_manage_options', 'admin.php?page=sunshine'); $sunshine_admin_submenu = array(); $sunshine_admin_submenu[10] = array(__('Galleries','sunshine'), __('Galleries','sunshine'), 'sunshine_manage_options', 'edit.php?post_type=sunshine-gallery'); $sunshine_admin_submenu[20] = array(__('Product Categories','sunshine'), __('Product Categories','sunshine'), 'sunshine_manage_options', 'edit-tags.php?taxonomy=sunshine-product-category&post_type=sunshine-product'); $sunshine_admin_submenu[30] = array(__('Products','sunshine'), __('Products','sunshine'), 'sunshine_manage_options', 'edit.php?post_type=sunshine-product'); $sunshine_admin_submenu[40] = array(__('Orders','sunshine'), __('Orders','sunshine'), 'sunshine_manage_options', 'edit.php?post_type=sunshine-order'); $sunshine_admin_submenu = apply_filters('sunshine_admin_menu', $sunshine_admin_submenu); ksort($sunshine_admin_submenu); foreach ($sunshine_admin_submenu as $item) { add_submenu_page('sunshine_admin', $item[0], $item[1], $item[2], $item[3], $item[4]); } 

Я применяю фильтр в подменю, потому что у меня есть аддоны для моего плагина, которые могут добавлять дополнительные элементы подменю.

Мои проблемы возникают с использованием «Настройки» и таксономии «Категории продуктов»

Когда вы нажимаете на вкладку «Настройки» или «Категории товаров», мое основное меню Sunshine не открывается, чтобы показать все параметры подменю. Если я нажму на «Галереи», это будет прекрасно видно со всеми видимыми элементами подменю, а «Галереи» выделены белым / полужирным шрифтом.

Я сделал несколько поисков и нашел тему поддержки, которая привела меня к реализации следующего:

 function sunshine_submenu_show_fix($parent_file) { global $current_screen; $taxonomy = $current_screen->taxonomy; if ($taxonomy == 'sunshine-product-category') $parent_file = 'sunshine_admin'; return $parent_file; } add_action('parent_file', 'sunshine_submenu_show_fix'); 

Этот тип получает, когда вы нажимаете на «Категории продуктов», все элементы подменю теперь видны, но сам «Категории товаров» не являются полужирным / белым, как «Галереи».

Моя цель состоит в том, чтобы иметь возможность щелкнуть «Настройки» или «Категории продуктов», и все элементы подменю «Саншайн» все видны, а соответствующая страница отображается белым / полужирным шрифтом.

Попробуй:

 function sunshine_submenu_show_fix($parent_file) { global $plugin_page; $taxonomy = $current_screen->taxonomy; if ($taxonomy == 'sunshine-product-category') $plugin_page = 'sunshine_admin'; return $parent_file; } add_action('parent_file', 'sunshine_submenu_show_fix'); 

объяснение:

в файле /wp-admin/menu-header.php:

 $parent_file = apply_filters( 'parent_file', $parent_file ); get_admin_page_parent(); ... function _wp_menu_output(...) { ... if ( ( $parent_file && $item[2] == $parent_file ) || ( empty($typenow) && $self == $item[2] ) ) { $class[] = ! empty( $submenu_items ) ? 'wp-has-current-submenu wp-menu-open' : 'current'; ... } else if ( ( ! isset( $plugin_page ) && $self == $sub_item[2] ) || ( isset( $plugin_page ) && $plugin_page == $sub_item[2] && ( $item[2] == $self_type || $item[2] == $self || file_exists($menu_file) === false ) ) ) { $class[] = 'current'; } ... } 

в файле /wp-admin/includes/plugin.php:

 ... function get_admin_page_parent( $parent = '' ) { ... if ( $parent_menu[2] == $plugin_page ) { $parent_file = $plugin_page; ... if ( isset( $plugin_page ) && ($plugin_page == $submenu_array[2] ) ) { $parent_file = $parent; ... }