Очень часто в техническом задании на создание шаблона для WordPress значится пункт: «Не должно быть циклических ссылок». Это означает, что, когда мы находимся на какой-либо странице, на ней не должно быть ссылок на саму себя.
Чтобы выполнить данное требование для меню WordPress, существует решение, которое с помощью регулярного выражения вырезает ссылку текущей страницы, оставляя только текстовое название пункта. Но лучше удалять у ссылки атрибут href.
Таким образом, ссылка без
Вот код, который решает поставленную задачу (его необходимо поместить в файл functions.php вашей темы):
Если есть необходимость применить это только для конкретного меню, то код будет таким:
Здесь
Чтобы выполнить данное требование для меню WordPress, существует решение, которое с помощью регулярного выражения вырезает ссылку текущей страницы, оставляя только текстовое название пункта. Но лучше удалять у ссылки атрибут href.
Таким образом, ссылка без
href
соответствует стандарту, к тому же является валидной. При этом она по сути перестает быть ссылкой: у нее отсутствует соответствующий курсор, по ней нельзя никуда перейти, не работает псевдокласс :link
и нет подчеркивания.Вот код, который решает поставленную задачу (его необходимо поместить в файл functions.php вашей темы):
PHP:
function wp_nav_menu_no_current_link( $atts, $item, $args, $depth ) {
if ( $item->current ) $atts['href'] = '';
return $atts;
}
add_action( 'nav_menu_link_attributes', 'wp_nav_menu_no_current_link', 10, 4 );
PHP:
function wp_nav_menu_no_current_link( $atts, $item, $args, $depth ) {
if ( $args->theme_location == 'menu_name' ) {
if ( $item->current ) $atts['href'] = '';
}
return $atts;
}
add_action( 'nav_menu_link_attributes', 'wp_nav_menu_no_current_link', 10, 4 );
menu_name
— это идентификатор, который указывается в функции register_nav_menu()
и в параметре theme_location
функции wp_nav_menu()
.