Сворачиваем родительское меню на странице произвольной таксономии в WordPress

WordPress позволяет вам создавать свои собственные меню в административной панели, и сделать это можно с помощью функции function add_menu_page()

<?php
add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
?>

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

<?php add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function ); ?>

Используя дочерние страницы вы сможете добавить любую ссылку, которая вам понадобится, указывающих на любую страницу, будь то страница настроек, ссылка на фронтенд, ссылка на произвольный тип записи или произвольную таксономию.

Если нужно добавить ссылку на произвольную таксономию для редактирования тегов /wp-admin/edit-tags.php?taxonomy=category в это меню, вы различное поведение этих меню по сравнению с остальными подстраницами меню.

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

Используя сниппет ниже, вы можете добавить новый файл Javascript для того, чтобы проверить и увидеть, открыто ли меню верхнего уровня на определенной странице. Если же нет, то мы добавим CSS класс для того, чтобы раскрыть этот элемент меню.

add_action('admin_head', 'pu_set_open_menu');

/**
 * Отрываем правильное меню для таксономии
 */
public function pu_set_open_menu()
{
    $screen = get_current_screen();
    if( $screen->base === 'edit-tags' && $screen->taxonomy === 'taxonomy_type_name' )
    {
        wp_enqueue_script( 'open-menu-parent', plugins_url('../assets/js/admin-menu.js', __FILE__ ), array('jquery') );
    }
}

Как вы видите в коде выше, мы можем определить, на какой странице мы сейчас находимся, используя функцию get_current_screen(), что позволит нам получить базовую страницу и проверить тип таксономии, чтобы убедиться, что мы находимся на правильной странице, прежде чем будет добавлен файл Javascript.

Создаем соответствующий файл в папке вашего плагина или темы, называем его admin-menu.js. Путь к файлу необходимо поправить в соответствующем месте в коде выше.

(function ( $ ) {
    // Закрываем все остальные родительские меню
    $('.wp-has-current-submenu').removeClass('wp-has-current-submenu');

    // Открываем ваше определенное родительское меню
    $('.toplevel_page_top-menu-level-item')
        .removeClass('wp-not-current-submenu')
        .addClass('wp-has-current-submenu wp-menu-open');

}(jQuery));

Надеемся, что эта статья помогла вам применить сворачивание родительского меню на странице произвольной таксономии при разработке темы или плагина WordPress.

По всем вопросам и отзывам просьба писать в комментарии ниже.

Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • Ева Евстигнеева

    День добрый! А вы случайно не подскажите, как сделать так, что бы меню с подпунктами не сворачивалось на сайте. Скажем при переходе на вложенную категорию меню оставалось раскрытым.

Scroll To Top