Як видалити посилання активного (поточного) пункту меню WordPress
Привіт:) У цій примітці покажу, як швидко видалити URL-адресу активного (вибраного) пункту меню в WordPress. Це може бути корисно, якщо ви хочете уникнути дублювання сторінок (наприклад, коли головна сторінка доступна як / і /home) або просто прибрати зайве клікабельне посилання в меню.
🔧 Основний варіант: видалити посилання з активного пункту
Додайте наступний код у файл functions.php вашої активної теми або у свій кастомний плагін:
add_filter( 'nav_menu_link_attributes', function( $atts, $item, $args, $depth ) {
if ( $item->current ) {
$atts['href'] = '';
}
return $atts;
}, 10, 4 );
Цей код перевіряє, чи є пункт меню поточним (активним), і якщо так — видаляє атрибут href, тобто посилання.
❗️ У такому випадку елемент меню залишиться візуально на місці, але вже не буде клікабельним.
🎯 Застосувати лише до певного меню
Якщо потрібно, щоб це правило застосовувалось лише до певного меню (наприклад, тільки у верхньому хедері або тільки у футері), використовуйте фільтр із перевіркою theme_location:
add_filter( 'nav_menu_link_attributes', function( $atts, $item, $args, $depth ) {
if ( isset($args->theme_location) && $args->theme_location === 'menu_id' ) {
if ( $item->current ) {
$atts['href'] = '';
}
}
return $atts;
}, 10, 4 );
Замініть 'menu_id' на ID розташування меню, яке зареєстроване у вашій темі. Його можна знайти у виклику wp_nav_menu() або функції register_nav_menus().
📌 Альтернативний варіант — замінити на #
Якщо повне видалення href з якихось причин некоректно працює у вашій темі (наприклад, порушує верстку чи JavaScript), замість порожнього значення можна підставити хеш (#), який не веде на іншу сторінку:
if ( $item->current ) {
$atts['href'] = '#';
}
🧪 Додатково — вимкнути курсор та стилізувати
Можна також додати спеціальний клас для неактивного посилання та стилізувати його через CSS:
if ( $item->current ) {
$atts['href'] = '';
$atts['class'] = 'current-item-disabled';
}
А потім у CSS:
.current-item-disabled {
cursor: default;
pointer-events: none;
color: #999;
text-decoration: none;
}
Видалення посилання з активного пункту меню — простий спосіб оптимізувати навігацію на сайті та уникнути дублів сторінок. Використовуйте цей метод обережно, перевіряючи, як він поводиться у вашій темі.
