logotip

Сквозные ссылки

Всем привет! Сегодня на seo-mayak.com я расскажу, что такое сквозные ссылки и какое влияние они оказывают на продвижение сайта, а также объясню причем тут внутренняя SEO-оптимизация.

Если кто-то ждет, что я начну рассказывать, как продвигать сайт с помощью сквозных ссылок, размещая их на разных ресурсах, то хочу Вас огорчить, разговор будет прямо противоположным.

Речь пойдет как раз о вреде сквозных ссылок, которые упорно не хотят замечать на своих сайтах многие веб-мастера.

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

skvoznye ssylki

К сквозным ссылкам можно отнести внутренние или внешние ссылки, расположенные: в шапке сайта, в сайдбаре или в футере (подвале).

Теперь давайте разберемся какие ссылки обычно оказываются в вышеуказанных местах и выясним, насколько они полезны. Поехали!

Сквозные ссылки в шапке сайта

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

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

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

К ссылкам на категории мы еще вернемся, а пока я хочу заострить ваше внимание на скрытых сквозных ссылках, которые не видны пользователю, но по которым свободно гуляют поисковые роботы.

Это ссылки выводимые функцией wp_head() в область шапки сайта, между тегами <head></head>. Все эти ссылки являются сквозными, советую почитать статью и избавиться от лишнего хлама в header.

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

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

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

Сквозные ссылки в сайдбаре

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

Все ссылки с меню навигации являются внутренними. Можно считать за благо, что это внутренние ссылки, но все не так однозначно. Зачастую страницы категорий, во избежания частичных дублей, закрыты от индексации в файле robots.txt или с помощью мета-тега robots.

Возникает резонный вопрос, зачем нужны сквозные ссылки, ведущие на заблокированные страницы? А ответ прост — не нужны! Вернее, навигационное меню конечно необходимо для удобства пользователей и в общем для юзабилити сайта.

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

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

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

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

Если эти ссылки вредные, то как закрыть от индексации все меню? Некоторые веб-мастера скрывают от индексации сайдбары целиком.

Но допустим у меня в сайдбаре есть информация, которую я бы не хотел скрывать от роботов, а хочу скрыть только меню категорий, как мне тогда быть?

Выход всегда есть! Можно закрыть ссылки на категории с помощью jQuery AJAX и сделать это можно двумя способами.

Способ №1

Для начала надо выполнить все инструкции, описанные в этой статье.

Напомню как выглядят ссылки на рубрики в исходном коде:

skvoznye ssylki1

После того, как подключена библиотека  jQuery и установлен скрипт обработчик, открываем файл functions.php (советую пользоваться FTP клиентом Notepad++) и в самое начало после тега <?php вставляем следующую функцию:

function mayak_hide_navigation_menu( $mayak_hide_menu ) {
$pum = array ("<a", "/a>", "href", );
$bum = array ('<span class="external-reference"', "/span>", "data-link");
return str_replace($pum, $bum, $mayak_hide_menu);
}
add_filter( 'wp_list_categories', 'mayak_hide_navigation_menu' );

После чего ссылки на категории в исходном коде примут следующий вид:

skvoznye ssylki2

Благодаря скрипту-обработчику все ссылки останутся в рабочем состоянии, но не будут индексироваться поисковыми роботами и как следствие по ним не будет утекать статический вес.

Способ №2

Второй способ немного сложнее, так как требует создания нового файла.

После того, как подключена библиотека jQuery, создаем в папке с темой новый php-файл под названием, например: ajax-menu.php. Внутрь файла помещаем следующий код:

<?php require_once("../../../wp-config.php"); ?>
<?php wp_list_categories('sort_column=name&title_li='); ?>

За вывод списка категорий в WordPress отвечает функция wp_list_categories(), которая может принимать множество параметров. В своих будущих статьях я обязательно более подробно разберу данную функцию, так что подписывайтесь на обновления блога, а сейчас я не буду на этом останавливаться.

Открываем файл footer.php и после тега </body> вставляем такой скрипт:

<script>(function($){ $(function(){$("#menu").load("http://Ваш домен/wp-content/themes/Название вашей темы/ajax-menu.php");})})(jQuery)</script>

Не забудьте вписать в скрипт свой домен и название папки с темой.

Далее идем в админку сайта и вставляем в виджет следующий код:

<div id="menu"></div>

Сохраняем изменения, после чего в исходном коде страницы вместо ссылок на категории у нас останется пустой блок div с идентификатором:

skvoznye ssylki3

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

#menu

Надеюсь понятно!

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

Второй способ использования jQuery AJAX наиболее подходит для скрытия от индексации внутренних ссылок с облака меток, которые тоже являются сквозными и ведут на заблокированные страницы. Я сам облако меток не использую, но многие веб-мастера его применяют, поэтому не лишнем будет и об этом рассказать.

За вывод облака меток отвечает функция wp_tag_cloud(). Создаем еще один php-файл под названием ajax-tag.php и внутрь вставляем следующее:

<?php require_once("../../../wp-config.php"); ?>
<?php wp_tag_cloud (); ?>

Скрипт обработчик должен выглядеть следующим образом:

<script>(function($){ $(function(){$("#tag").load("http://Ваш домен/wp-content/themes/Название вашей темы/ajax-tag.php");})})(jQuery)</script>

На месте вывода меток прописываем блок div c идентификатором tag:

<div id="tag"></div>

В принципе не сложно.

Но данный метод имеет свой недостаток. Для каждого случая придется прописывать новый скрипт. В принципе можно создать и подключить отдельный  js-файл, куда в дальнейшем будут вписываться коротенькие скрипты. Это уже по желанию.

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

Данные ссылки также можно убрать в скрипт. Ждите статью, в которой я приведу код блока «ТОП комментаторов» адаптированный под скрипт. Кстати поступало очень много просьб рассказать, как сделан «ТОП комментаторов» у меня на блоге. Вот заодно и расскажу.

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

Предвижу рассуждения о клоакинге. Друзья, если люди прячут сайдбары в скрипт и поисковые системы это не считаются клоакингом, то мой метод вообще выглядит «законопослушным», так что не бойтесь и не слушайте паникеров.

Еще есть мнения, что Google умеет читать AJAX и что мол скрывать ссылки таким методом бессмысленно. Так вот, что я скажу. Читать то он может и читает, но ссылки спрятанные в скрипт Google не индексирует и в конце статьи я это докажу. Идем дальше.

В бесплатных шаблонах, в сайдбаре, частенько присутствуют левые внешние сквозные ссылки, т.е. проставленные распространителями шаблонов. Это метод черного SEO и рассчитан на новичков, которые плохо разбираются в кодах и не смогут сами с ними расправиться. В этом случаи хорошо помогает плагин ТАС, с помощью которого можно легко найти и обезвредить скрытые сквозные ссылки.

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

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

Сквозные ссылки в футере (подвале)

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

Уважаемые начинающие веб-мастера, большое количество счетчиков не даст вам ничего кроме дырок, через которые будет утекать статический вес. Одного хорошего счетчика вполне достаточно!

Я здесь не говорю про Яндекс Метрику или Google Analytics, их надо ставить не ранее чем через пол года, после рождения проекта.

Можете проверить свой сайт на наличие сквозных внешних ссылкок с помощью сервиса linkpad.ru. Для этого надо вбить свой домен в поле для поиска и на открывшийся странице выбрать пункт «Ссылки на сайте»:

stalo

Пример наглядно показывает, что 822 внешние ссылки с моего блога были проиндексированы.  Если полюбопытствовать, что это за ссылки, то станет понятно откуда они взялись:

skvoznye ssylki4

Почти все показанные сервисом ссылки — это ссылки: со счетчика liveinternet.ru, с рейтинга top100.rambler.ru и каталога list.mail.ru.

Поэтому стоит убрать и эти ссылки в скрипт.

Для этого в папке с темой создаем файл под названием ajax-koll.php, куда помещаем функцию require_once() и коды счетчиков:

<?php require_once("../../../wp-config.php"); ?>
<a href="http://list.mail.ru"><img src="http://list.mail.ru/img/listru-a21.gif" alt="" width="88" height="31" border="0"/><a>
<a href="http://www.liveinternet.ru/click" target="_blank"><img src="//counter.yadro.ru/logo?45.1" title="LiveInternet" alt="" border="0" width="31" height="31"/></a>
<a href="http://top100.rambler.ru/navi/2835828/"><img src="http://counter.rambler.ru/top100.cnt?2835828" alt="Rambler's Top100" border="0" /></a>

Затем в файл footer.php вставиляем еще один скрипт с указанием пути до файла:

<script>(function($){ $(function(){$("#koll").load("http://seo-mayak.com/wp-content/themes/wp-themes-blogger/ajax-koll.php");})})(jQuery)</script>

А вместо вырезанных кодов счетчиков в футере вставляем блок div с идентификатором koll:

<div id="koll"></div>

К слову о способностях Google читать AJAX. Если вбить в адресную строку браузера такой запрос:

http://google.com/search?q=cache:seo-mayak.com

То Вы не увидите в подвале ни одного информера и это потому, что Гугл их не обнаружил, иначе они были бы кешированы вместе с другими элементами страницы. Вот такие дела!

До встречи!

С уважением, Виталий Кириллов

Комментарии: 189

  1. Александр:

    Добрый день Виталий. Полезная статья, спасибо. Полный код счетчика рамблер содержит скрипт и ссылку

    Вы же помещаете в файл ajax-koll.php только ссылку, а где остальная часть кода?

    Ответить
    • Виталий Кириллов:

      Александр, я немного изменил код счетчика рамблер.

      Ответить
  2. Гагик:

    Здравствуйте, Виталий.
    В файлы functions.php, header.php и footer.php внес все необходимые дополнения, и в коде страницы категории стали прописываются как обычный текст.
    Поскольку я помимо категорий использую метки и архивы, то решил скрыть их также.
    В предложенную Вами способом №1 функцию я добавил следующие строки:
    add_filter( ‘wp_tag_cloud’, ‘mayak_hide_navigation_menu’ );
    add_filter( ‘get_archives_link’, ‘mayak_hide_navigation_menu’ );
    и вроде все получилось. Теперь метки и архивы в коде страницы также прописываются как обычный текст.
    Как Вы думаете, я ничего не испортил своей самодеятельностью? Т.е. получил, что хотел, но тем самым испортил что-то в другом месте.
    С уважением,Гагик.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Гагик! Если все работает, то напортить ничего не должны.

      Ответить
  3. Гагик:

    А еще добавил следующую строку:
    add_filter( ‘the_category’, ‘mayak_hide_navigation_menu’ );
    т.к. в моей теме после каждой статьи выводится ссылка на категорию, содержащую данную статью.
    И теперь в коде страницы данная ссылка также прописываются как обычный текст.

    Ответить
    • Виталий Кириллов:

      Вы быстро учитесь)

      Ответить
  4. Гагик:

    Спасибо )
    Пока ждал Вашего ответа, прочел статью «wp_head() — функция WordPress. Лишние ссылки в header» и сделал все как Вы советуете, но даже после этого у меня в header-е осталось несколько ссылок, указывающие на версии продуктов:

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

    Ответить
    • Гагик:

      Я имел в виду функцию wp_ footer

      Ответить
      • Виталий Кириллов:

        Функцию wp_ footer(), также как функцию wp_head(), используют плагины и ссылки в подвал выводят именно они, а не WordPress. Советую минимизировать количество используемых плагинов.

        Ответить
        • Гагик:

          Добрый вечер, Виталий!
          Я сегодня решил сравнить код страницы сайта при входе на него как администратор и как обычный пользователь и установил для себя, что код страницы пользователя не содержит в Header-е и Footer-е всех тех ссылок с версиями программных продуктов о которых я говорил в моем предыдущем комментарии, что конечно очень радует. Но в связи с этим у меня возник вопрос:
          Какую из этих страниц сканирует робот ПС?
          С Уважением, Гагик.

          Ответить
          • Виталий Кириллов:

            Здравствуйте Гагик!
            Робот не знает пароль от админки…

            Ответить
            • Гагик:

              Спасибо, Виталий!
              Теперь буду спать спокойно)

              Ответить
  5. Сергей:

    Здравствуйте Виталий. А ссылки на Гугл+, Группу Вконтакте, Фидбенер и т.д. тоже нужно скрывать или нет? Заранее спасибо за ответ.

    Ответить
    • Виталий Кириллов:

      Если они сквозные, то лучше закрыть.

      Ответить
      • Гульнара:

        Можно подробнее, как закрыть сквозные ссылки соцсетей в шапке и футере блога? А еще лучше, как закрыть футер и шапку целиком от индексации?

        Ответить
  6. Sasha:

    Большое спасибо за статью! Но это просто уже невыносимо: все надо делать-делать-делать, менять, редактировать. Только вкладывай и вкладывай, а отдачи ноль(… И кто придумал, что блогинг — отличная возможность заработать? Закидать его помидорами)))

    Ответить
    • Виталий Кириллов:

      Саша, что за осенние настроения? Никто и не говорил. что будет просто.

      Ответить
      • Sasha:

        )Это не хандра, это реальный взгляд на вещи. Когда блогу почти 2 года, а он еще ничего не принес из дохода…. Только приходится еще больше в него вкладывать. А пользователям интернета преподносят блогинг как очень выгодное занятие. Выгодное, но для инфобизнесменов, ведущих тренингов и прочих, наверно.

        Ответить
        • Виталий Кириллов:

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

          Ответить
          • Sasha:

            Спасибо!) Банально жаль потраченных сил, времени и денег. Поэтому буду и дальше выжимать, пока, видимо, не добьюсь нужного мне результата.

            Ответить
  7. Евгений:

    Здравствуйте Виталий! Я пытаюсь поставить функцию, по второму способу, чтобы закрыть рубрики в сайдбаре, но у меня не получается, после того как я ставлю в function.php код, рубрики становятся серого цвета, у них просто исчезают ссылки, в рубрику попасть невозможно! Как решить эту проблему? Заранее благодарен!

    Ответить
    • Виталий Кириллов:

      Евгений, задача для новичка довольно не простая и требует знаний CSS. И еще, во-втором способе в файл functions.php не какого кода вставлять не надо.

      Ответить
      • Евгений:

        Извините, я имел введу первый вариант, хорошо попробую сделать как Вы описали во втором варианте, создам файл! Интересно узнать, как сделать так чтобы первый вариант был рабочим! Спасибо!

        Ответить
        • Виталий Кириллов:

          Евгений, чтобы первый вариант был рабочий надо сначала выполнить действия, описанные в другой статье, ссылку на которую я привел. Читайте внимательно.

          Ответить
          • Евгений:

            Да я сделал! Добавил в header нужный код, чтобы подключить jQuery, далее делаю все как написано в первом варианте, после чего, как я уже говорил ранее, в меню названия рубрик становятся серыми, кликнуть по ним просто невозможно! Помогите разобраться, буду весьма благодарен!

            Ответить
            • Виталий Кириллов:

              Евгений, а Вы попробуйте сей метод на простых ссылках, может у Вас скрипт не работает.

              Ответить
  8. Алексей:

    Здравствуйте Виталий. У меня на сайте стояли счетчики от майл ру и рамблер, но три месяца назад я их удалил. Почему при проверке linkpad.ru до сих пор показывает, что на сайте есть ссылки на них?

    Ответить
    • Виталий Кириллов:

      По-моему статистика linkpad.ru обновляется раз в квартал.

      Ответить
  9. Евгений:

    Виталий, а если ссылок на сайте не показывает этот сервис это плохо или хорошо ?

    Ответить
    • Виталий Кириллов:

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

      Ответить
  10. Евгений:

    Так что в моем случае, предложите делать ??

    Ответить
    • Виталий Кириллов:

      Евгений, я Вам посоветую набираться знаний и опыту.

      Ответить
  11. Sasha:

    Еще раз спасибо за статью! Морально собираюсь заняться изучением этой технологии:). Решила уточнить на всякий случай: в идеале в сайдбаре желательно закрыть все («Свежие записи», «Архив», «Рубрики»)? А еще нужно закрыть от индексации Фидбернер и счетчик ЛайвИнтернет, да?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Саша! Ссылки с блока «Свежие записи» не ведут на заблокированные страницы и закрывать их не надо, а вот архивы и рубрики зачастую закрыты для индексации, поэтому данные блоки можно скрыть. Фидбернер и счетчик ЛайвИнтернет также надо закрывать.

      Ответить
      • Sasha:

        Спасибо! Буду изучать, пытаться.

        Ответить
      • Игорь:

        А читал рекомендации, что рубрики наоборот не нужно закрывать от индескации.

        Ответить
  12. Sasha:

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

    Ответить
  13. Наталия Х.:

    Очень дельная статья. Хотя есть у меня блог для экспериментов, где я умышленно делаю всё «против правил», а он растет как на дрожжах, чисто по контенту.
    Но на личном, конечно, надо будет пересмотреть все ссылки на предмет «сквозняков».

    Ответить
  14. Иван:

    <a href="http: //plus.google.com" rel="nofollow"><a>
    <a href="http: //www.liveinternet.ru/click" rel="nofollow"></a>

    Это правильный код? Не то, я плоховато Вас понял)

    Ответить
    • Виталий Кириллов:

      Иван, если вы закрываете ссылки в скрипт, то зачем Вам rel=»nofollow?

      Ответить
  15. Daria:

    Здравствуйте, Виталий! Спасибо Вам за такие серьезные и содержательные статьи. А я вот задумалась — а хорошо ли что из хлебных крошек идет ссылка на категории? Почему там не стоит хотя бы nofollow?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Daria!
      Хлебные крошки не являются сквозными, но Вы правы, ссылки на категории в них не закрыты. Закрывать их nofollow не имеет смысла, а вот как закрыт скриптом я обещаю подумать. У меня сейчас дефицит времени и новые статью стоит ожидать ближе к новому году.

      Ответить
  16. Евгений:

    Здравствуйте. Спасибо. Статья отличная. И разъясняется доступнее чем у других. Закрыл рубрики и т.д. Но вот если в сайбаре есть код, который должен выводить информацию о текущей записи, то есть небольшая проблемка. Например, вставляем в hidden.php функцию <?php wp_title(); ?> …. и ничего. При подгрузке через Аякс невозможно получить ни заголовок, ни рубрику текущего поста, ни метку. Вы сталкивались с таким? Это решаемо?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Евгений! Если честно я ничего не понял. Что за файл hidden.php? Такого нет в стандартном наборе файлов шаблонов WordPress.

      Ответить
      • Евгений:

        Так (hidden.php) я назвал файл со скриптом Аякс. У Вас к примеру он имеет название ajax-menu.php. Название неважно. Суть вот в чём. Если создать файл со скриптом, например:
        <?php require_once("../../../wp-config.php"); ?>
        <?php wp_title(); ?>
        То он не выведет НИЧЕГО. А должен был бы вывести заголовок текущей записи. При подгрузке через Аякс невозможно определить заголовок текущей записи, рубрику текущей записи и т.д.

        Ответить
        • Виталий Кириллов:

          Евгений, надо проверить. Пока время нет.

          Ответить
          • Денис:

            Согласен с Евгением! Ajax не выводит текущие ссылки статьи…Ни название статьи, ни рубрики, ни метки. Просто пустое поле выводит! Виталий подскажите как это исправить! Спасибо.

            Ответить
            • Виталий Кириллов:

              Денис, функция the_title работает только внутри цикла WordPress, отсюда и проблемы.

              Ответить
  17. Анатолий:

    Привет! заметно что в кодах ты силен, но насчет разных ссылок и борьбы с ними — поветь все ето фигня. Алгоритм гугла розработан очень толково, по моим наблюдениям учитывает ВСЕ что физически возможно реализовать, даже текст с изображения пытается считать(ксть доказательстава)

    Ответить
  18. Анатолий:

    не надо ничево там закрывать

    Ответить
    • Виталий Кириллов:

      Здравствуйте! А по моим наблюдениям, после сих манипуляций посещалка с Гугла заметно подрастает. Сколько людей, столько и мнений.

      Ответить
  19. Роман:

    Господя, даже непонятно неофиту кого слушать) Одни одно говорят, другие другое….)

    Ответить
    • Виталий Кириллов:

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

      Ответить
      • Роман:

        Дя я не про себя) Я уже практически для себя всё решил…. Я про неофитов которые только первый блог создали. Однако и меня мозг иногда взрывался от изобилия информации.

        Ответить
  20. Олеся:

    У меня после ввода первого скрипта в functions.php выскакивает синтаксическая ошибка((

    Ответить
    • Виталий Кириллов:

      Олеся, Вы выполнили инструкции описанные в этой статье?

      Ответить
      • Олеся:

        Всё нормально теперь, спасибо) Вчера вечером мой молодой человек пришёл, присел на три минуты и всё исправил. У меня шаблон просто немного косячный, там свои заморочки)

        Ответить
  21. Sasha:

    Вопрос не по теме записи: а для блога нормально, если его долго не обновляют?

    Ответить
    • Виталий Кириллов:

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

      Ответить
      • Sasha:

        Есть в этом и положительные стороны! Опять не могу не вспомнить эту ужасную школу «СтартАп», которая только и делала, что говорила: надо обязательно регулярно обновлять блог, в равные промежутки времени, иначе вообще уйдет из выдачи и бла-бла-бла…. Чтоб у них так все шло, как они советовали)))…. Я тоже видела блоги, которые долго не обновлялись, но своих топовых позиций не теряли. Главное, писать, когда есть желание и возможность, а не просто потому, что надо. Буду и сама скоро так делать. Писать только под настроение.

        Ответить
        • Виталий Кириллов:

          Я знаю, почему «seo-специалисты» советуют писать каждый день. Это потому, что ежедневное обновление блога дает свой эффект, но этот «эффект» надо постоянно поддерживать.

          Ответить
          • Sasha:

            Вот-вот. Я этот эффект не ощутила, поэтому не вижу никакого смысла сидеть и стараться непонятно ради чего. Будет желание и настроение — постараюсь. А нет — так нет).

            Ответить
  22. Олеся:

    Хотелось бы кое-что уточнить. После вставки указанного в статье скрипта N1 для сокрытия ссылок в сайдбаре. Надписи (ссылки) превращаются в обычный текст (не кликабельный) и почему-то уменьшаются в размерах. Отсюда вопрос:
    — Из-за чего подобное происходит (так как после удаления скрипта ссылки опять возвращаются в кликабельный вид
    — Можно проверить подключилась ли библиотеки jQuery к сайту или нет?
    Как я понимаю за закрытие ссылок в категориях отвечает строка скрипта:
    add_filter( ‘wp_list_categories’, ‘mayak_hide_navigation_menu’ );
    может в этом скрывается какая-то ошибка?
    Заранее спасибо за ответ.

    Ответить
    • Виталий Кириллов:

      Олеся, у вас не работает скрипт обработчик. Попробуйте его вставить в файл header.php между тегами <head></head>. В исходном коде у вас все правильно.

      Ответить
      • Олеся:

        Без результата — не хочет скрипт обработчик работать совместно с функцией…. Будем искать….

        Ответить
  23. Алексей:

    Здравствуйте! Сайт на html 5 Вместо рубрик на сайте вывожу боковое меню категорий Они также как и рубрики будут иметь сквозные ссылки? Есть ли какой способ скрыть их?

    Ответить
    • Виталий Кириллов:

      Алексей, а чем отличаются категории от рубрик?

      Ответить
      • Алексей:

        пробовал ваши примеры 1 и 2-й в обоих случаях ссылки в меню остались без изменения вот и подумал что они могут иметь какое то отличие

        Ответить
        • Виталий Кириллов:

          Тогда без детального анализа я не берусь сказать в чем причина.

          Ответить
          • Алексей:

            ссылки page постраничной навигации тоже передают вес? стоит их закрывать на главной страницы?

            Ответить
            • Виталий Кириллов:

              Я закрыл.

              Ответить
              • Алексей:

                просмотрел ваш код не увидел что они закрыты

                Ответить
                • Виталий Кириллов:

                  Алексей, а вы используете мой код постраничной навигации из моей статьи?

                  Ответить
                  • Алексей:

                    Попробывал ваш код постраничной навигации Проверяю исходящии ссылки все ссылки присутствуют /page/2,3,4…n есть ли какие другие способы закрытия ссылок page?

                    Ответить
                    • Виталий Кириллов:

                      На каком сервисе Вы проверяли ссылки?

  24. Алексей:

    _mainspy.ru/analiz_ssylok_sajta

    Ответить
    • Виталий Кириллов:

      Ничего он не определяет!

      Ответить
      • Алексей:

        сделал скриншёт _s020.radikal.ru/i723/1501/92/68f04bfb9384.png

        Ответить
        • Виталий Кириллов:

          Алексей, так вы в коде, который взяли с моего блога, не поменяли теги «а» на теги «span» и не вставили класс. Я то думал вы сделали, как у меня и какой-то сервис там что-то видит…

          Ответить
          • Алексей:

            а как это сделать? всё что мог уже попробовал

            Ответить
            • Виталий Кириллов:

              Хорошо Алексей, скоро будет статья, где я все расскажу.

              Ответить
  25. AndreyShaD:

    Спасибо за интересный сервис нашел много интересных ссылок на свой блог.

    Ответить
  26. Олег:

    Спасибо за статью. Актуальная тема, но как-то не очень хочется связываться со скриптами.
    Виталий, а что Вы думаете по поводу закрытия, через php-редирект, файл с кодом которого закрыт от индексации через robots.txt?

    Например, имя_сайта/go.php?url=алиас

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

    Ответить
    • Виталий Кириллов:

      Олег, я нет я не пробовал, не меня «пугают» редиректы, по-моему их может получиться довольно много, что скажется на скорости загрузки сайта в общем.

      Ответить
  27. Роман llgr:

    Здравствуйте!
    По вашим материалам на блоге ВП пытаюсь закрыть внутренние ссылки на категории и рубрики, для этого в файле functions.php прописал замену для ссылок на метки (например) с «a» на «span»:
    /* Hide the tags links */
    function llgr_hide_navigation_tags( $llgr_hide_tags ) {
    $pum = array ("<a", "/a", "href", );
    $bum = array ('<span class="external-reference"', "/span", "data-link");
    return str_replace($pum, $bum, $llgr_hide_tags);
    }
    add_filter( 'the_tags', 'llgr_hide_navigation_tags' );
    /*—————————————*/

    Соответственно раньше ссылки на метки были вида:
    <a href="http://dogshow.me/tag/golden-retriever" rel="tag">Золотистый ретривер</a>
    А теперь:
    <span class="external-reference" data-link="http://dogshow.me/tag/golden-retriever" rel="tag">Золотистый ретривер</span>

    Скрипт для обработки и открытия ссылки:
    <script>$('.external-reference').replaceWith (function (){return'<a onclick="return !window.open(this.href)" href="'+$(this).data ('link')+'" title="'+$(this).text ()+'">'+$(this).html ()+'</a>';})</script>

    Библиотека подключена последняя, но перепробовал разные от 1.8.3.:
    <script type='text/javascript' src='http://dogshow.me/wp-includes/js/jquery/jquery.js?ver=1.11.1'></script>

    Скрипт не работает. Метки обёрнулись в span, но не открываются.
    Подскажите, пожалуйста, как реализовать, в чём может быть ошибка.
    Благодарю за ответ.

    Ответить
    • Роман llgr:

      Помогло вот такое изменение скрипта:
      <script>
      +function($){
      $(document).ready(function(){
      $('.external-reference').replaceWith (function (){return'<a onclick="return !window.open(this.href)" href="'+$(this).data ('link')+'" title="'+$(this).text()+'">'+$(this).html()+'</a>';});
      });
      }(jQuery);
      </script>

      Теперь ссылки на метки отображаются так:
      <a onclick="return !window.open(this.href)" href="http://dogshow.me/tag/golden-retriever" title="Золотистый ретривер">Золотистый ретривер</a>

      Виталий, у вас ссылки в блоке ТОП5 комментариев отображаются аналогично:
      <a onclick="return !window.open(this.href)" href="http://dogshow.me/faqs/kto-takoy-handler" title="Роман llgr">Роман llgr</a>

      Значит всё правильно настроено? Не могли бы Вы посмотреть на моём блоге и развеять сомнения?
      Благодарю за ответ.

      Ответить
      • Виталий Кириллов:

        Роман, если Все работает, то значит все нормально.

        Ответить
    • Виталий Кириллов:

      Здравствуйте Роман! А вы в каком файле подключали скрипт?

      Ответить
      • Роман llgr:

        Всё работает, спасибо, за вашу статью!

        В конечном счёте остановился на таком варианте:
        <script>
        +function($){
        $(document).ready(function(){
        $('.hidden-link').click(function(){window.open($(this).data('link'));return false;});
        $('.external-reference').replaceWith(function(){return'<a onclick="return !window.open(this.href)" href="'+$(this).data('link')+'"title="'+$(this).text()+'">'+$(this).html()+'</a>';});
        });
        }(jQuery);
        </script>
        hidden-link оборачивает в span’ы — для простых ссылок
        external-reference — для картинок и блоков
        скрипт подключен перед </body> в файле footer.php

        Кстати в 1-ом способе в строках №2 и №3 можно заменить "/a" и "/span" на "/a>" и "/span>" соответственно, потому что при закрытии категорий и меток логут ломать ссылки начинающиеся с буквы «а», например data-link="http://dogshow.me/tag/akita"

        Ответить
        • Роман llgr:

          Ой, преобразователь неправильно обработал data-link

          Ответить
        • Виталий Кириллов:

          Вы правы роман, надо поправить код.

          Ответить
  28. Валентина Кирс:

    Виталий, спасибо, Вы мне открыли глаза на сквозные ссылки. Я о них раньше даже не задумывалась. Полезная статья!

    Ответить
    • Виталий Кириллов:

      Пожалуйста Валентина! Рад видеть Вас на блоге.

      Ответить
  29. Евгений:

    Виталий привет! Проблема с графическим отображением счетчика liveinternet возникла…Главное счетчик метрики нормально отображается, а счетчик liveinternet без показа посетителей в коробке…Не знаешь что может быть?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Евгений! Думаю надо выждать время, когда специалисты liveinternet в очередной раз отладят отображение своих информеров.

      Ответить
  30. Алексей:

    В первом способе для чего нужен этот класс class=»external-reference» ?

    Ответить
    • Виталий Кириллов:

      Именно на этот класс ориентируется скрипт обработчик.

      Ответить
      • Алексей:

        После того как закрыл рубрики по ним невозможно перейти Что я сделал не так?

        Ответить
        • Виталий Кириллов:

          Значит скрипт обработчик не действует, а может Вы библиотеку не подключили. Причин может быть несколько.

          Ответить
  31. prodvizhenie-pf:

    Про облако тегов и закрытие счетчиков интересно, но пока сложно для меня. Надо еще пару раз статью перечитать.

    Ответить
  32. Евгений:

    Виталий привет! при установке счетчика от рамблер вознеикает проблема, из-за вот такой строчки в скрипте, который устанавливается в теле футера, до : src=»http://counter.rambler.ru/top100.jcn?000000 . Она выводит значок рамблера, под футером, и второй значок рамблера появляется в футере, с такой же картникой как на твоем сайте. Как решить такую проблему?

    Ответить
    • Виталий Кириллов:

      Евгений, приведи мне полный код от Рамблера, не забудь воспользоваться преобразователем.

      Ответить
      • Евгений:

        <!— begin of Top100 code —>

        <script id="top100Counter" type="text/javascript" src="http://counter.rambler.ru/top100.jcn?3125820"></script>
        <noscript>
        <a href="http://top100.rambler.ru/navi/3125820/">
        <img src="http://counter.rambler.ru/top100.cnt?3125820" alt="Rambler's Top100" border="0" />
        </a>

        </noscript>
        <!— end of Top100 code —>

        Ответить
        • Виталий Кириллов:

          Евгений, достаточно просто прописать:
          <a href="http://top100.rambler.ru/navi/3125820/"><img src="http://counter.rambler.ru/top100.cnt?3125820" alt="Rambler's Top100" border="0" />
          </a>

          Ответить
  33. Артем Юдинцев:

    Способ хорош безусловно, но есть и минус — пользователь перешедший потом по такой ссылке не сможет вернуться назад в браузере, по кнопке <-, привычным способом. Единственное, что можно сделать это как указал автор, открывать в новом окне, но тогда ухудшается юзабилити сайта, да и пользователей откровенно раздражает множество окон. Второй минус — если закрыть таким методом основное меню, то в серпе яндекса НЕ появятся "быстрые ссылки", что то же не есть гуд.

    Ответить
  34. Виталик:

    Виталий, подскажите пожалуйста такой вопрос. Сразу после заголовка статьи у меня блоге выводятся ссылки на автора, дату, категории и количество комментариев. Так вот, получается что все они кроме комментариев, скрыты. Как сделать с ними точно также, как и со сквозными ссылками категорий?

    Ответить
    • Виталий Кириллов:

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

      Ответить
  35. Денис:

    Здравствуйте Виталий! Возникла проблема у меня. Как вывести по второму варианту категории и метки к статье в которой находишься? Не срабатывает функция
    <?php require_once("../../../wp-config.php"); ?>
    <?php _e("Категория:"); ?><?php the_category(',') ?><br />
    <?php the_tags(__('Теги: '), ', '); ?>

    Выводится только текст — Категория:
    Метки вообще не появляются.

    А вот функция wp_list_categories работает

    Помогите разобраться в чем проблема. Может быть другую функцию нужно писать для вывода категорий и меток к текущему посту?
    Заранее благодарен!!!

    Ответить
    • Виталий Кириллов:

      Здравствуйте Денис. С ходу точно не могу сказать, надо разбираться.

      Ответить
      • Виталий Кириллов:

        Денис, я разобрался в Вашей проблеме. Функции the_category и the_tags работают только внутри цикла WordPress и поэтому при AJAX ничего не выводится.

        Ответить
  36. Алексей:

    сервис _linkpad.ru показал Ссылки на сайте-586 штук в основном это яндекс метрика и ссылки партнерок Подскажите как убрать эти ссылки в скрипт?

    Ответить
    • Виталий Кириллов:

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

      Ответить
  37. Алексей:

    Здравствуйте! Подскажите пожалуйста В меню сайта удаляю циклические ссылки (когда нахожусь в активном пункте меню ссылка не активна не ссылается на саму себя)
    следующим кодом
    function no_link_menu( $p ) {
    return preg_replace( '%((current-menu-item)[^<]+)[^>]+>([^<]+)%', '$1<span class="nolinks">$3</span>', $p, 1 );
    }
    add_filter('wp_nav_menu', 'no_link_menu');
    все работает но в коде страницы у активного пункта меню отображается тег </a> GПодскажите как от него можно избавиться?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Алексей. Не совсем ясная картина для меня, чтобы сразу указать на причину.

      Ответить
      • Алексей:

        скрин того что получается s020.radikal.ru/i709/1601/e9/3ce6e83b5f86.png закрывающий тег </а> остается

        Ответить
        • Виталий Кириллов:

          Попробуйте так:

          function no_link_menu( $p ) {
          return preg_replace( '%((current-menu-item)[^<]+)[^>]+>([^<]+)</a>%', '$1<span class="nolinks">$3</span>', $p, 1 );
          }
          add_filter('wp_nav_menu', 'no_link_menu');
          
          Ответить
          • Алексей:

            function no_link( $p ) {
            return preg_replace( '%((current-cat)[^<]+)[^>]+>([^<]+)</a>%', '$1<span class="nolink">$3</span>', $p, 1 );
            }
            add_filter( 'wp_list_categories', 'no_link' );
            Для рубрик получилось! а для меню не сработало ссылка полностью остается как будто код не вставлял в чем может быть проблема!? помогите пожалуйста!
            function no_link_menu( $p ) {
            return preg_replace( '%((current-menu-item)[^<]+)[^>]+>([^<]+)</a>%', '$1<span class="nolinks">$3</span>', $p, 1 );
            }
            add_filter('wp_nav_menu', 'no_link_menu');

            Ответить
            • Виталий Кириллов:

              Попробуйте вместо current-menu-item вставить current_page_item.

              Ответить
  38. Алексей:

    у меня там единственный класс current-menu-item других нету На всякий случай проверил с current_page_item не получилось

    Ответить
    • Виталий Кириллов:

      Так должно работать, хотя не факт, шаблоны у всех разные:

      function no_page_link_menu( $p ) {
      return preg_replace( '%((current_menu_item)[^< ]+)[^>]+>([^< ]+)%', '$1<span class="nolink">$3</span>', $p,1 );
      }
      add_filter('wp_list_pages', 'no_page_link_menu');
      
      Ответить
      • Алексей:

        так тоже не сработает я меню вывожу wp_nav_menu
        <?php wp_nav_menu( array('menu' => 'Навигация по сайту','container' => 'false','items_wrap' => '<a href="#" id="pull">меню</a><ul>%3$s</ul>','walker' => $walker ));?>

        Ответить
        • Виталий Кириллов:

          Ищите Алексей, решение где-то рядом. Закрывающий </a> для страниц может быть лишним.
          Конечно вам надо использовать хук wp_nav_menu.
          Я проверил на своем тестовом сайте, код, приведенный мной в предыдущем комментарии работает.
          В общем ищите, чем смог, тем помог!

          Ответить
          • Алексей:

            Спасибо!

            Ответить
          • Алексей:

            Подскажите еще пожалуйста! можно ли закрыть от индексации только один пункт меню?

            Ответить
            • Виталий Кириллов:

              Не пробовал, но в программировании нет ничего невозможного.

              Ответить
              • Алексей:

                https://wordpress.org/support/topic/add-class-to-link-in-custom-menu?replies=6 нашел одну функцию вроде то что нужно
                немного подправил
                function add_menuclass($ulclass) {
                return preg_replace('/<a rel="fancybox"/', '<span rel="fancybox" class="external-reference"', $ulclass, 1);
                }
                add_filter('wp_nav_menu','add_menuclass');
                но она не срабатывает

                Ответить
                • Виталий Кириллов:

                  Данная функция будет срабатывать только на первом совпадении. Алексей Вы какой по счету пункт скрыть хотите?

                  Ответить
                  • Алексей:

                    В других пунктах у меня нет rel=»fancybox» только в последнем его и хочу скрыть

                    Ответить
                    • Алексей:

                      function add_menuclass($ulclass) {
                      return preg_replace('/rel="fancybox"/', 'class="fancybox"', $ulclass, -1);
                      }
                      add_filter('wp_nav_menu','add_menuclass');
                      удалось присвоить только класс последнему пункту а вот как заменить тег «а» на тег span незнаю

                    • Виталий Кириллов:

                      Попробуйте так:

                      function add_menuclass($ulclass) {
                      $ad_mk = array('<a rel="fancybox"', '</a>');
                      $bd_mk = array('<span rel="fancybox" class="external-reference"', '</span>');
                      return str_replace($ad_mk, $bd_mk, $ulclass);
                      }
                      add_filter('wp_nav_menu','add_menuclass');
                      
                    • Виталий Кириллов:

                      Только к классу привяжитесь, я не вижу всю структуру исходного кода.

  39. Алексей:

    так тоже не выходит к каждому пункту присваивается придыдущаяя ссылка итого в каждом пункте по 2 ссылки И подмены тоже не происходит

    Ответить
    • Виталий Кириллов:

      Вот попробуйте функцию:

      function add_menuclass($ulclass) {
      $ad_mk = array('<a class="fancybox"', 'href' '</a>');
      $bd_mk = array('<span class="fancybox external-reference"', 'data-link', '</span>');
      return str_replace($ad_mk, $bd_mk, $ulclass);
      }
      add_filter('wp_nav_menu','add_menuclass');
      
      Ответить
      • Алексей:

        теперь по три ссылки в каждом пункте

        Ответить
        • Виталий Кириллов:

          Алексей дайте мне ftp доступ и я сделаю, а то мы в так долго будем переписываться. У меня ведь другие дела есть, за деньги!

          Ответить
          • Виталий Кириллов:

            Готово Алексей, посмотрите, как это делается.

            Ответить
            • Алексей:

              Спасибо огромное за ваш труд Смотрю в коде но там нет подмены тега «а» на span

              Ответить
              • Виталий Кириллов:

                Ну как же нет, когда есть)

                Ответить
                • Виталий Кириллов:

                  Вы наверное через firebug смотрите, так там подмены и не увидите, смотрите исходный код.

                  Ответить
              • Алексей:

                спасибо еще раз действительно в коде страницы увидел

                Ответить
                • Виталий Кириллов:

                  Пожалуйста, но в следующий раз бесплатно делать не буду. Успехов.

                  Ответить
  40. Ксенья Юрьевна:

    Виталий я хотела бы уточнить: » вместо вырезанных кодов счетчиков», т.е. самих кодов счетчиков не будет? И они будут отображаться только по этим ссылкам с функциями?

    Ответить
    • Виталий Кириллов:

      Почему не будет, все будет! Счетчики, если их правильно вставить, будут исправно функционировать, но внешние ссылки с них индексироваться не будут.

      Ответить
  41. Ксенья Юрьевна:

    Спасибо, Виталий, теперь зарегистрируюсь рамблере и майле, а так у меня только liveinternet стоит, именно из-за исходящих ссылок.

    Ответить
  42. Артем Михайлов:

    Виталий, подскажите, а как модифицировать этот код, чтобы можно было скрыть не только категории в сайдбаре, но и главное меню в шапке?

    Ответить
    • Виталий Кириллов:

      Артем, какая функция у Вас выводит главное меню?

      Ответить
      • Артем Михайлов:

        Эмммм, вроде прописано, что wp_nav_menu, но я не уверен.

        Ответить
      • Артем Михайлов:

        Точно wp-nav-menu) Вот кусок header с меню:

        ‘— Main Menu —‘, ‘indent_string’ => ‘- ‘, ‘indent_after’ => »,’container’ => ‘div’, ‘container_class’ => ‘responsive-menu-wrapper’, ‘theme_location’=>’main_menu’) );
        echo »;
        }
        // main menu
        echo »;
        if( has_nav_menu(‘main_menu’) ){
        wp_nav_menu( array(‘container’ => ‘div’, ‘container_class’ => ‘menu-wrapper’, ‘container_class’ => ‘headmenu’, ‘menu_class’=> ‘sf-menu’, ‘theme_location’ => ‘main_menu’ ) );
        }

        Ответить
      • Артем Михайлов:

        Извиняюсь, воспользовался Вашим преобразователем))

        <!— Navigation —>
        <div class="clear"></div>
        <div class="gdl-navigation-wrapper">
        <?php

        // responsive menu
        if( $gdl_is_responsive ){
        dropdown_menu( array('dropdown_title' => '— Main Menu —', 'indent_string' => '- ', 'indent_after' => '','container' => 'div', 'container_class' => 'responsive-menu-wrapper', 'theme_location'=>'main_menu') );
        echo '<div class="clear"></div>';
        }
        // main menu
        echo '<div class="navigation-wrapper">';
        if( has_nav_menu('main_menu') ){
        wp_nav_menu( array('container' => 'div', 'container_class' => 'menu-wrapper', 'container_class' => 'headmenu', 'menu_class'=> 'sf-menu', 'theme_location' => 'main_menu' ) );
        }

        Ответить
        • Виталий Кириллов:

          Попробуйте такой фильтр:

          function mayak_hide_navigation_menu( $mayak_hide_menu ) {
          $pum = array ("<a", "/a>", "href", );
          $bum = array ('<span class="external-reference"', "/span>", "data-link");
          return str_replace($pum, $bum, $mayak_hide_menu);
          }
          add_filter( 'wp_nav_menu', 'mayak_hide_navigation_menu' );
          
          Ответить
          • Артем Михайлов:

            Виталий, спасибо огромнейшее!!! Все работает как надо)) Скажите, а Вы у себя хлебные крошки закрывали? И есть ли смысл? А то у меня уже закрыто и меню, и сайдбар с категориями, и ссылки в шапке и в футере)) Не посчитают это поисковые системы чересчур наглым?:)))

            Ответить
            • Виталий Кириллов:

              Нет, я хлебные крошки не закрывал, ведь это не сквозные ссылки.
              Думаю, что поисковики нормально к этому отнесутся.

              Ответить
              • Артем Михайлов:

                Виталий, здравствуйте! А возможно ли использовать Ваш код для логотипа в шапке сайта? В файле header.php у меня есть такая конструкция:

                if(!is_front_page() || is_paged())
                echo
                "<a href=\"ССЫЛКА\" title=\"ОПИСАНИЕ\">
                <img src=\"/wp-content/themes/bluediamond-v1-11/images/default-logo.png\">
                </a>";
                else
                echo "<img src=\"/wp-content/themes/bluediamond-v1-11/images/default-logo.png\">";

                Спасибо.

                Ответить
                • Виталий Кириллов:

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

                  Ответить
                  • Артем Михайлов:

                    То есть прямо в файле header.php я заменяю теги а на span, а вместо конструкции href=… подставляю class=»external-reference» data-link=»…»><img src="…"? Я так попробовал, но выскочил белый экран. Просто тут в коде еще есть слеши /,\. Видимо это синтаксис php, который я не очень пока понимаю)

                    Ответить
                  • Артем Михайлов:

                    Виталий, здравствуйте! Очень нужна Ваша помощь! Неделю радовался, что все получилось и все ссылки скрыты, но преждевременно. Случайно деактивировал вместо нужного плагин, отвечающий за вывод слайдера на главной странице (шел в комплекте с платным шаблоном wordpress). После активации слайдер и еще табличка с вкладками перестали работать. Написал в саппорт разработчику темы, где мне указали, что я подключаю библиотеку JQuery через Гугл по Вашей инструкции, хотя в теме уже предусмотрена своя библиотека. Другими словами удаляю библиотеку из Вашей инструкции и слайдер и таблица работают, но ссылки не скрыты! Я уже пробовал подключить эту злосчастную библиотеку через function.php и менял версии, все впустую:(( Не подскажите, в каком направлении нужно искать решение, ведь целую неделю все работало, и вдруг перестало:( Спасибо.

                    Ответить
                    • Виталий Кириллов:

                      Артем, всегда надо делать резервные копии файлов и базы данных. В данный момент, что у Вас не работает?

  43. Артем Михайлов:

    Здравствуйте, Виталий! Копии то есть, их и пришлось восстановить. Восстановление работоспособности мне объяснили тем, что сейчас у меня гугловская библиотека Jquery подключается в самом верху страницы. Стоит ее переместить ниже или подключить через functions.php, как возникает конфликт. Сейчас все работает, но Page Speed упорно не хочет выводить меня в зеленую зону из-за скриптов:( CSS и скрипты сжаты и все ок, но само наличие скриптов вверху страницы занижает мои баллы (особенно для мобильных пользователей)

    Ответить
  44. Артем Михайлов:

    Виталий, здравствуйте. Подскажите, есть огромное желание спрятать от индексации «хлебные крошки», выводимые плагином Yoast SEO, но чтобы они остались для посетителей. Правильно ли я понимаю, что для этого просто необходимо найти функцию, которая отвечает за вывод этих крошек, и добавить ее в строку add_filter( ‘функция’ ); ? Спасибо.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Артем! Не совсем так. Функция в плагине, выводящая крошки, должна иметь хук за который можно зацепить фильтр. Данный хук (крючок) задается функцией apply_filters(). В общем тема не простая и сложно ее раскрыть в рамках комментария.

      Ответить
      • Артем Михайлов:

        Нашел много таких функций в файле плагина class-breadcrumbs.php. Пробовать все подряд добавлять в код и смотреть обернулись ли крошки в тег span?

        Ответить
      • Артем Михайлов:

        Виталий, хочу с Вами поделиться своей победой) Добавление всех этих хуков в Вашу функцию, к сожалению, ничем не помогло. Но решение пришло))) Я нашел строчку в коде плагина, отвечающую за формирование хлебных крошек и заменил теги а на span и подставил класс class=»external-reference» data-link… И все получилось! Все крошки обернулись и в коде страницы отображаются текстом и работают как надо для посетителей)) Вот теперь почти весь вес сайта сосредоточен на статьях, да еще и очень равномерно распределен;) Спасибо Вашему блогу и Вам лично! Это реально самый крутой и полезный блог! Очень бы еще хотелось увидеть у Вас статью о том, как сделать кнопки «поделиться в соц. сетях» без плагина и сторонних сервисов)) Уверен, что запрос очень высокочастотный;)

        Ответить
        • Виталий Кириллов:

          Я рад Артем, что у Вас все получилось!

          Ответить
  45. Наталья:

    Здравствуйте, Виталий! Искала ответ на вопрос, индексирует ли поисковик ссылки по onclick, и прочитала, что индексирует! Но не только по onclick, но еще и может индексировать ссылки, скрытые предложенным вами способом. Вот статья с таким же способом: devaka.ru/articles/hide-links-from-google. Там в комментах вообще панику развели, что это «черный» сео, дорвеи, клоакинг и т.д. Вот теперь страшно стало немного) Но, судя по тому, что вы в гугле в топе, он вас за это не наказывает) Виталий, может, действительно поисковики умеют определять, что это ссылки?

    Ответить
    • Наталья:

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

      Ответить
      • Виталий Кириллов:

        Наталья, да Вы зря волнуетесь и не стоить внимать паникерам. Способ уже проверенный временем и доказал свою работоспособность.

        Ответить
  46. Наталья:

    Да, хотела сначала оставить ссылки и поставить rel=nofollow, но прочитав еще пару статей об этом nofollow, решила все-таки отказаться от этой идеи и вернуться к вашему способу) Тем более, осталось доделать только счетчики в футере) Не буду паниковать, доверюсь вашему опыту)) А вообще не понимаю, зачем придумали этот атрибут nofollow?? Если верить тому, что он передает вес страницы в пустоту, получается, он абсолютно бесполезный, и к тому же вредный.
    Кстати, только что по подписке пришел комментарий к вашей статье «Популярные записи в сайдбаре», так там ссылка на статью мало того, что в теге a, так еще и с rel=nofollow. Это так надо или ошибка?

    Ответить
    • Виталий Кириллов:

      Наталья, во все ссылки в зоне комментариев, WordPress автоматом добавляет nofollow. Опять же руки не доходят поправить ситуацию.

      Ответить
      • Наталья:

        понятно) ну, это, наверное, придется повозиться, чтобы внутренние ссылки остались обычными ссылками, но без nofollow, а внешние менять на span (если я все правильно поняла)

        Ответить
        • Виталий Кириллов:

          Я возни не боюсь, просто времени на все не хватает)

          Ответить
          • Наталья:

            аналогично)

            Ответить
  47. Наталья:

    Виталий, подскажите, пожалуйста! Используя первый способ:

    add_filter( 'wp_list_categories', 'mayak_hide_navigation_menu' );

    как применить этот фильтр не ко всем категориям, а выборочно, по слагу?

    Ответить
    • Наталья:

      Виталий, решила не сдаваться и самостоятельно решить задачу) Вот таким образом:

      function add_rel_category($nav_menu, $args) {
      $menu_args = $args->menu;
      $menu_slug = $menu_args->slug;

      $pum = array ("<a", "/a>", "href", );
      $bum = array ('<span class="hidden-link"', "/span>", "data-link");

      if (($menu_slug) == 'menu1')
      $nav_menu = str_replace('<a ', '<a rel="category" ', $nav_menu);
      else
      $nav_menu = str_replace($pum, $bum, $nav_menu);
      return $nav_menu;
      }
      add_filter('wp_nav_menu', 'add_rel_category', 10, 2);

      Дело в том, что у меня категории выводятся не функцией wp_list_category, а wp_nav_menu (но принцип один и тот же). Просто понадобилось это потому, что в одном произвольном меню мне нужно было в ссылку вставить rel=»category» (т.к. рубрики индексируются), а в другом произвольном меню заменить ссылки на span.

      Ответить
      • Виталий Кириллов:

        Наталья здравствуйте! Не мог сразу ответить, но я рад, что Вы за это время смогли решить задачу. Еще раз поражаюсь Вашему стремлению к знаниям!

        Ответить
  48. Ксенья Юрьевна:

    Виталий, в коде часто встречается слово «mayak» это имя вашего сайта? Или какой-то программистский знак? Может быть вам такой вопрос смешным покажется, но это ничего, я правда это серьезно спрашиваю. Если это ваш сайт, тогда это слово нужно заменять на имя своего сайта или как?
    Я это слово оставляю в коде, как у вас написано.

    Ответить
    • Виталий Кириллов:

      Это моя личная метка, как программиста, не советую в функции ничего менять.

      Ответить
  49. Ксенья Юрьевна:

    Здравствуйте Виталий,по первому способу я все правильно сделала, но он у меня совсем не работает — в категориях не появляется span.external-reference, удалила все скрипты.
    Вторым способом сделать не сумею, я совсем не программист, копирую у вас и вставляю, чисто механически, совершенно не зная сути программирования.
    Хорошо поняла, что писать статьи при таких дырах, почти бесполезно. Виталий, я хотела бы вас попросить закрыть мои » сквозняки» платно, когда у вас будет время.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Ксенья Юрьевна! Напишите мне, через форму обратной связи.

      Ответить
  50. Вадим:

    Здравствуйте Можно ли в вашей функции сделать чтобы ссылки в рубриках закрывались скриптом на всех страницах кроме главной а при клике по рубрикам открывались в новом окне браузера?

    Ответить
  51. Вадим:

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

    Ответить
    • Виталий Кириллов:

      Как-то так:

      function mayak_hide_navigation_menu( $mayak_hide_menu ) {
          $pum = array ("<a", "/a", "href",  );
          $bum = array ('<span class="hidden-link"', "/span", "data-link");
      	if(!is_home())
      	return str_replace($pum, $bum, $mayak_hide_menu);	
      	else return	$mayak_hide_menu;	
      }
      add_filter( 'wp_list_categories', 'mayak_hide_navigation_menu' );
      Ответить
  52. Стас:

    Извините Виталий, но не получается первый метод. Вот я хочу закрыть от индексации список категорий по Вашему рецепту получается, что нужно обернуть функцию вывода категорий следующим образом:
    <span class="external-reference" data-link="<?php wp_list_categories() ?>"></span>
    Как легко догадаться, оборачивается в span сначала заголовок, т.е. слово «Рубрики» и только потом сами ссылки. Естественно ничего из-за этого не работает. В чём подвох, как вы этого избежали?

    Ответить
    • Виталий Кириллов:

      Стас, видимо у Вас заголовок «Рубрики» является еще и ссылкой, т.е. в нем присутствует тег «a», иначе ничего бы не оборачивалось в span.

      Ответить
      • Стас:

        Вывожу стандартным запросом php wp_list_categories() правда посмотрев инспектор кода увидел, что в сайдбаре почему-то заголовок Рубрики, обрамлён тегом li , вообще не пойму от чего, а можно как-то избавиться вообще от заголовка рубрики?

        Ответить
        • Виталий Кириллов:

          Заголовок можно убрать. Вот почитайте про параметры функции wp_list_categories().

          Ответить
  53. Стас:

    Может кому пригодится. Вообщем крутил и так и этак и ничего у меня не получалось. Применил следующее средство и всё получилось. Как это работает понять не трудно.В файле function.php вносим следующее изменение
    add_action('wp_footer', 'add_scripts'); // приклеем ф-ю на добавление скриптов в футер

    function add_scripts() { // добавление скриптов
    if(is_admin()) return false; // если мы в админке — ничего не делаем
    wp_deregister_script('jquery'); // выключаем стандартный jquery
    wp_enqueue_script('jquery','//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js','','',true); // добавляем свой
    /*('jquery', get_template_directory_uri().'/js/jquery-2.1.3.js','','',true); // добавляем свой локальный*/
    wp_enqueue_script('bootstrap', get_template_directory_uri().'/js/bootstrap.min.js','','',true); // бутстрап
    wp_enqueue_script('main', get_template_directory_uri().'/js/main.js','','',true); // и скрипты шаблона
    }
    На всё не смотрим, саое главное для нас, подключить отдельный файл main.js и уже в него прописав код
    $('.external-reference').replaceWith (function (){return'<a onclick="return !window.open(this.data-link)" data-link="'+$(this).data ('link')+'" title="'+$(this).text ()+'">'+$(this).html ()+'</a>';})
    У меня всё заработало, почему не заработала вставка яваскрипта прамо из футера, для меня, загадка, видимо что-то с шаблоном.

    Ответить
  54. Юрий:

    Хорошо написано. Полезная информация.

    Ответить
  55. Юлия:

    Здравствуйте, Виталий. Не могли бы Вы подсказать, как Вы установили код счетчика от mail.ru? Просто, в меню редактирования счетчика, самый короткий вариант, предлагаемый для установки, выглядит следующим образом:
    <!— Rating@Mail.ru counter —>
    <script type="text/javascript">
    var _tmr = window._tmr || (window._tmr = []);
    _tmr.push({id: "2804564", type: "pageView", start: (new Date()).getTime()});
    (function (d, w, id) {
    if (d.getElementById(id)) return;
    var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id;
    ts.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//top-fwz1.mail.ru/js/code.js";
    var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);};
    if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); }
    })(document, window, "topmailru-code");
    </script><noscript><div style="position:absolute;left:-10000px;">
    <img src="//top-fwz1.mail.ru/counter?id=2804564;js=na" style="border:0;" height="1" width="1" alt="Рейтинг@Mail.ru" />
    </div></noscript>
    <!— //Rating@Mail.ru counter —>

    Ответить
    • Виталий Кириллов:

      Юлия, у меня стоит не код счетчика, а информер того, что сайт добавлен в каталог mail.ru.
      Кстати надо его давно уже убрать.

      Ответить

Оставить комментарий

Внимание комментатор! Прежде чем вставить: HTML, JavaScript или PHP код в свой комментарий, преобразуй его в html сущность!

Subscribe without commenting

» Подписаться на комментарии по RSS