♛ FORTRESS-DESIGN

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

Циклические ссылки — ссылки, ведущие на ту же страницу, на которой находятся.

Какой вред от циклических ссылок

Очень часто программисты (разработчики тем для Вордпресс) спрашивают: «Чем же они плохи, циклические ссылки?».

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

Из-за циклических ссылок

Явтушенко Александр прокомментировал мой список так:

Помимо технических моментов, которые вы указали, такие ссылки попросту бесполезны. Зачем пользователю ссылка на туже страницу где он находится? Ошибка не является критичной, но лучше такие ссылки убрать.

Можно ли оставить циклические ссылки

Следует убрать циклические ссылки или сделать их не активными. Это позволит поисковым системам не зацикливаться на одной и той же странице, а следовательно, быстрее индексировать ваш сайт и добавлять в результаты поиска новые страницы.

Где чаще всего находятся циклические ссылки

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

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

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

Как их найти

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

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

  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() определяет главную страницу только если она не статическая.


Перейти к верхней панели