Как убрать циклические ссылки из меню, логотипа и комментариев

Часто, даже в платных темах для Вордпресс, разработчики оставляют недоработки в виде циклических ссылки из активных пунктов меню и логотипа.

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

Если нужно убрать ссылку из текущего пункта меню, являющимся названием рубрики (категории), чтобы он перестал быть ссылкой на странице этой рубрики, это можно сделать как минимум тремя способами:

  1. С помощью jqery — будет работать, но этот вариант работает только на стороне пользователя.
  2. Можно сделать на php, чтобы сразу на сервере все это делалось и пользователю выдавался конечный результат.
  3. Подключив плагин Remove Redundant Links (Удаление лишних ссылок).

Первый способ на jQery

Довольно просто сделать если подключен jQuery. Код выглядит так:

Код:

<script>
(function($) {
  $('.current-menu-item').find('a').removeAttr('href');
}(jQuery));
</script>
Удаление циклических ссылок из меню, логотипа и комментариев

Dacian G / Shutterstock.com

Второй способ на PHP (рекомендуется)

  1. Открываем файл functions.php вашей темы.
  2. Вставляем код, который будет удалять ссылки из активного пункта меню.

Код:

function no_link_current_page( $p ) {
    return preg_replace( '%((current_page_item|current-menu-item)[^<]+)[^>]+>([^<]+)</a>%', '$1<a>$3</a>', $p, 1 );
}
add_filter('wp_nav_menu', 'no_link_current_page');

Обратите внимание! Скорее всего у вас слетят стили активного пункта меню и после применения данной функции он будет выглядеть некорректно. Поэтому текущий пункт меню рекомендую обвертывать в span и прописать для него те же стили, какие были у активного элемента.

Код:

function no_link_current_page( $p ) {
    return preg_replace( '%((current_page_item|current-menu-item)[^&lt;]+)[^&gt;]+&gt;([^&lt;]+)&lt;/a&gt;%', '$1<span style="color: #ff0000;">&lt;span&gt;</span>$3<span style="color: #ff0000;">&lt;/span&gt;</span>', $p, 1 );
}
add_filter('wp_nav_menu', 'no_link_current_page');

Стили прописываются в style.css, а идентификатор так:

Код:

... '$1<span>$3</span>' ...

Третий способ: плагин Remove Redundant Links

Да он тоже выполняет аналогичную работу. Установили плагин и циклических ссылок нет. Но в нем столько кода…

Он оставляет фрагменты кода ссылки (<a>) и еще свой стиль дописывает:

<a>Здесь была циклическая ссылка</a>

Если не совсем не знаете php и боитесь залезть в код, то можете скачать плагин Remove Redundant Links здесь: https://wordpress.org/plugins/remove-redundant-links/changelog/

Как удалить циклические ссылки из комментариев

У кого стандартные комментарии, для тех тоже есть лекарство от цикличных ссылок 🙂

add_filter( 'cancel_comment_reply_link', '__return_false' );

Этот код также нужно добавить в файл функций вашей темы.

Как удалить циклическую ссылку с логотипа

Чтобы убрать ссылку на главной, нужно добавить проверку:

<?php
if ( is_front_page() ) {
    // логотип без ссылки
} else {
    // лого со ссылкой
}
?>

Кстати, функция is_home() не всегда срабатывает, поэтому рекомендуется использовать is_front_page().

Потому что is_home() определяет главную страницу только если она не статическая.

  • http://vk.com/id161156171 Миша Алтайский

    Получается что в случае с меню надо $3 обернуть стилем как и в дефолтном меню?

  • Алексей

    Второй способ Циклическая ссылка в рубриках при удалении вашим кодом остается в коде страницы закрывающий тег Как от него можно избавиться?