Давно известно, что если страница ссылается сама на себя — это плохо как для пользователя, так и для поисковых систем. Пусть это и незначительный фактор ранжирования, но всё же. Поэтому максимально стараемся избавиться от такого рода ссылок.

У каждого сайта на WordPress есть возможность создавать меню, причём это можно сделать в админке («Внешний вид»-«Меню»). У меня таким образом сделано верхнее меню (Рисунок 1).

Верхнее меню на сайте seowind.ru

Рисунок 1. Верхнее меню сайта SeoWind.ru

По-умолчанию все эти 4 ссылки, которые вы видите на рисунке 1, ссылались сами на себя. Это меня не устраивало. И я думаю Вас тоже такой расклад не должен устраивать. Поэтому идём в функции темы (functions.php) и вставляем в него следующий php код:

class mainMenuWalker extends Walker_Nav_Menu {
function start_el(&$output, $item, $depth, $args) {
// назначаем классы li-элементу и выводим его
$class_names = join( ‘ ‘, $item->classes );
$class_names = ‘ class=»‘ .esc_attr( $class_names ). ‘»‘;
$output.= ‘<li id=»menu-item-‘ . $item->ID . ‘»‘ .$class_names. ‘>’;
// назначаем атрибуты a-элементу
$attributes.= !empty( $item->url ) ? ‘ href=»‘ .esc_attr($item->url). ‘»‘ : »;
$item_output = $args->before;
// проверяем, на какой странице мы находимся
$current_url = (is_ssl()?’https://’:’http://’).$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];
$item_url = esc_attr( $item->url );
if ( $item_url != $current_url ) $item_output.= ‘<a’. $attributes .’>’.$item->title.'</a>’;
else $item_output.= $item->title;
// заканчиваем вывод элемента
$item_output.= $args->after;
$output.= apply_filters( ‘walker_nav_menu_start_el’, $item_output, $item, $depth, $args );
}
}

Как видим мы создали персональный класс Walker, который используется функцией выводящей меню — wp_nav_menu.

Далее идем в шаблон, в котором выводится меню. У меня — это header.php. Вместо существующего кода вставляем:

<?php
$walker = new mainMenuWalker ();
wp_nav_menu_tm( array( ‘container_id’ => ‘dropmenu’, ‘walker’ => $walker ) );
?>

И всё! Готово! Теперь, когда находишься на странице, ссылка в меню неактивна. А если поработать в CSS, а тут у каждого индивидуально, то можно добиться выделения цветом текущей страницы. К примеру, из рисунка 1 видно, что я нахожусь в данный момент на странице «Мои услуги».