Удаление циклически ссылок из меню

Простой сниппет, который поможет вам удалить циклические ссылки из меню wordpress. Сейчас конечно не 2010 год и я уверен, что поисковые машины научились с легкостью распознавать циклические ссылки и не обращать на них внимания, но пусть в голове будет микро пунктик, что избавляясь от циклических ссылок это хоть как-то поможет вашему сайту чувствовать себя в плане SEO по лучше

//  Удаление циклической ссылки из текущего пуннкта меню
function remove_cyclical_link_f_nav($items, $args) {
    $search  = '#<a(.*?)href="(.*?)"(.*?)aria-current="page">(.*?)</a>#';
    $replace = '<span aria-current="page">$4</span>';
    $items = preg_replace($search, $replace, $items);
  
    return $items;
}
add_filter('wp_nav_menu_items', 'remove_cyclical_link_f_nav', 10, 2);

Данный сниппет работает с страницами, записями, а так же произвольными ссылками. Результат выполнения — замена ссылки на тег <span>. Так же не стоит забывать, что для него нужно будет продублировать те же стили, что и для меню, не знаю как у вас называются стили, но это будет что-то вроде этого:

.menu a,
.menu span {
/* ваши стили для пункта меню */
}

Пару хороших практик вдогонку

Ничто так часто не попадается на глаза, как циклическая ссылка на главной странице сайта в логотипе/слогане, это можно легко исправить с помощью вордпресовских условий (conditional tags), например выводить лого в вашем header.php так:

<?php if ( is_front_page() || is_home()) : ?>

<div href="<?php echo esc_url( home_url( '/' ) ); ?>" class="logo">
    <img src="<?php echo get_template_directory_uri(); ?>/assets/img/logo.png" alt=""/>
</div> 

<?php else : ?> 

<a href="<?php echo esc_url( home_url( '/' ) ); ?>" class="logo">
<img src="<?php echo get_template_directory_uri(); ?>/assets/img/logo.png" alt=""/>
</a>

<?php endif; ?>

И наверное самый забавный пример, когда на сайте нет категорий, вложенных статей, но почему-то владельцы сайтов упорно продолжают использовать хлебный крошки, где просто ссылка на главную и название страницы, причем ключ — текущее название статьи дублируется аж в трех местах — тайтл, заголовок и хлебаная крошка. Так делать не надо, не надо использовать хлебные крошки, где это не требуется, пользователь не тупой и сам в состоянии найти главную