Удобное скрытие панели инструментов (тулбара, админ-бара) в WordPress
Мне не нравится как панель расположена вверху во фронт-энде. Она часто не гармонирует с дизайном, но это можно пережить. Но когда она начинает мешать при всяких прокрутках или дополнительных плавающих панелях, то тут уже определенно надо что-то делать.
На мой взгляд самое универсальное решение — сделать эту панель скрывающейся (сворачивающейся). Так она не будет мешать и когда нужно под рукой.
По этому вопросу я искал плагины, но нашел каких-то монстров. Поэтому пришлось написать свой код. То что получилось мне нравится, в некоторых случаях это очень удобно: кроме того что панель не мешает, она еще и способна вместить больше элементов. Суть заключается в том, что панель появляется при наведении на иконку в верхнем левом углу и появляется она в вертикальном виде, а не горизонтальном. Получается своего рода сворачивание админ бара.
Вот так это выглядит на теме Twenty Twenty-One:
Код, который делает такие преобразования:
<?php /** * Сollapse ADMIN-BAR (Toolbar) into left-top corner. * * @version 1.0 */ final class Kama_Collapse_Toolbar { public static function init(){ add_action( 'admin_bar_init', [ __CLASS__, 'hooks' ] ); } public static function hooks(){ // remove html margin bumps remove_action( 'wp_head', '_admin_bar_bump_cb' ); add_action( 'wp_head', [ __CLASS__, 'collapse_styles' ] ); } public static function collapse_styles(){ // do nothing for admin-panel. // Remove this if you want to collapse admin-bar in admin-panel too. if( is_admin() ){ return; } ob_start(); ?> <style id="kama_collapse_admin_bar"> #wpadminbar{ background:none; float:left; width:auto; height:auto; bottom:0; min-width:0 !important; } #wpadminbar > *{ float:left !important; clear:both !important; } #wpadminbar .ab-top-menu li{ float:none !important; } #wpadminbar .ab-top-secondary{ float: none !important; } #wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{ top:0; left:100%; white-space:nowrap; } #wpadminbar .quicklinks>ul>li>a{ padding-right:17px; } #wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{ left:100%; right:auto; } html{ margin-top:0!important; } #wpadminbar{ overflow:hidden; width:33px; height:30px; } #wpadminbar:hover{ overflow:visible; width:auto; height:auto; background:rgba(102,102,102,.7); } /* the color of the main icon */ #wp-admin-bar-<?= is_multisite() ? 'my-sites' : 'site-name' ?> .ab-item:before{ color:#797c7d; } /* hide wp-logo */ #wp-admin-bar-wp-logo{ display:none; } /* #wp-admin-bar-search{ display:none; } */ /* edit for twentysixteen */ body.admin-bar:before{ display:none; } /* for almin panel --- */ @media screen and ( min-width: 782px ) { html.wp-toolbar{ padding-top:0 !important; } #wpadminbar:hover{ background:rgba(102,102,102,1); } #adminmenu{ margin-top:48px !important; } } /* Gutenberg */ #wpwrap .edit-post-header{ top:0; } #wpwrap .edit-post-sidebar{ top:56px; } </style> <?php $styles = ob_get_clean(); echo preg_replace( '/[\n\t]/', '', $styles ) ."\n"; } }
Теперь нужно скопировать этот код в файл, подключить этот файл в functions.php и запустить класс так:
Kama_Collapse_Toolbar::init();
Ещё один вариант простой реализации:
<?php /** * Vesrion: 1.0 */ add_action( 'init', [ Collapse_Admin_Bar::class, 'init' ] ); final class Collapse_Admin_Bar { public static function init(): void { add_action( 'admin_bar_init', [ __CLASS__, 'hooks' ] ); } public static function hooks(): void { // remove html margin bumps remove_action( 'wp_head', '_admin_bar_bump_cb' ); add_action( 'wp_enqueue_scripts', [ __CLASS__, 'collapse_styles' ] ); } public static function collapse_styles(): void { $styles = <<<CSS #wpadminbar { transition: clip-path .3s ease 1s, background-color .2s ease 1s; clip-path: polygon(0 0, 32px 0, 32px 100%, 0 100%); } #wpadminbar:not( :hover ) { background-color: rgba(29, 35, 39, 0); } #wpadminbar:not( :hover ) .ab-item::before { color: #1d2327; transition-delay: 1s; } #wpadminbar .ab-item { position: relative; } #wpadminbar #wp-admin-bar-site-name > .ab-item::after { content: ''; position: absolute; top: 7px; left: 7px; z-index: -1; width: 20px; height: 20px; border-radius: 50%; background-color: #fff; opacity: .8; transition: opacity .2s ease 1s; } #wpadminbar:hover #wp-admin-bar-site-name > .ab-item::after { opacity: 0; transition-delay: 0s; } #wpadminbar:not( :hover ) > * { pointer-events: none; } #wpadminbar:hover { transition-delay: 0s; clip-path: polygon(0 0, 100% 0, 100% 100vh, 0 100vh); } @media screen and ( max-width: 782px ) { #wpadminbar { clip-path: polygon(0 0, 50px 0, 50px 100%, 0 100%); } } CSS; wp_register_style( 'collapse-admin-bar', false ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion wp_add_inline_style( 'collapse-admin-bar', $styles ); wp_enqueue_style( 'collapse-admin-bar' ); } }
Вставлять этот код нужно в functions.php или оформите из него плагин, если часто меняете шаблоны.
Для работы кода, нужно чтобы в footer.php темы вызывалась функция wp_footer().
—