Як видалити посилання активного (поточного) пункту меню 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;
}

Видалення посилання з активного пункту меню — простий спосіб оптимізувати навігацію на сайті та уникнути дублів сторінок. Використовуйте цей метод обережно, перевіряючи, як він поводиться у вашій темі.

Михайло Петров
Михайло Петров

Мене звати Михайло. Я — WordPress-розробник. Створюю візитки, корпоративні сайти, інтернет-магазини, блоги на WordPress. Надаю консультації з WordPress.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *