+79272238641 a.v.brezhnev@gmail.com

В статье предлагается способ маскировки ссылок в шаблоне темы, содержащих php-код, изображения или скрипты с помощью плагина RC Link Redirector. А также рассматриваются некоторые «фишки» при использовании функций этого плагина. 

WordPress LogoВ жизни любого блога наступает момент,  когда возникает необходимость в маскировке внешних ссылок. Причин может быть много, но наиболее частые — монетизация блога и желание скрыть ссылки в комментариях к постам, которые зачастую оказываются спамом. Для этих целей существует огромное количество плагинов к WordPress, но наиболее популярными заслуженно считаются два — WP No External Links и RC Link Redirector. Первый «на лету» производит замену внешних ссылок на внутренние, оборачивает их в теги <noindex> и 'rel=nofollow', может добавить тег target='_blank' и т.д. 

В итоге ссылка <a href='http://www.site.com'>Super Site</a>

принимает вид: <noindex><a rel='nofollow' target='_blank' href='http://www.site.com'>Super Site</a></noindex>

Однако очевидно, что фактический адрес редиректа остается неизменным и виден посетителю. Намного эффективней работа плагина RC Link Redirector от Роланда Чанишвили — помимо редиректа он шифрует ссылку, делая её «неопознаваемой», да и вообще функционал плагина один из широчайших:

  • Гибкое и удобное управление из панели Администратора.
  • «Шифрование» всех исходящих ссылок.
  • «Оборачивает» ссылки в постах и страницах
  • «Оборачивает» ссылки в цитатах
  • «Оборачивает» ссылки в комментариях
  • «Оборачивает» ссылки в текстах комментариев
  • «Оборачивает» ссылки на сайты коментаторов
  • «Оборачивает» ссылки в блогролле
  • Использует свою базовую ссылку при редиректе
  • Базовая ссылка автоматически меняется при сохранении параметров плагина
  • Добавляет target='_blank' ко всем обработанным ссылкам, кроме архивов и исполнимых файлов
  • Добавляет rel='nofollow' ко всем обработанным ссылкам
  • Использует «белый список» слов отменяющих обработку ссылок их  содержащих.
  • Использует служебное значение тега rel='*****' отменяющее обработку конкретной ссылки.
  • Учитывает специальный CSS класс, отменяющий обработку ссылки.
  • Обеспечивает высокий уровень защиты от несанкционированного использования редиректа
  • Если текст сам является ссылкой меняет его на [ссылка]

Преобразование ссылок выглядит следующим образом:

<a href="http://www.site.com">Super Site</a>
<a href="http://a-brezhnev.ru/ck03b2/XkVCQQIeGABbBgdITEELQlMTQQBEQUpeRV9K/">Super Site</a>
<a href="http://www.site.com">http://www.site.com</a>
<a  href="http://a-brezhnev.ru/ck03b2/XkVCQQIeGABbBgdITEELQlMTQQBEQUpeRV9K/">[ссылка]</a>

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

<?php echo rcr_encode('<a href="http://www.site.com/"> Super Site </a>'); ?>

Достаточно вставить это код в нужное место темы и на выходе получить зашифрованную ссылку.  Обратите внимание, что текст внутри тегов не должен сам являться ссылкой, т.е. не должен содержать 'http://' .  Сложные конструкции, типа <a><img /></a> также обрабатываются корректно, но только в том случае, если вызов картинки не содержит php-кода или скриптов. Если же код внутри ссылки присутствует, то функция rcr_encode возвращает строку без изменения. Но и это ограничение легко обходится.

Для решения этой задачи можно применить вот такую конструкцию:

<?php
$link = rcr_encode('<a href="http://www.site.com">.</a>');
echo str_replace («<a href=\»","«,str_replace („\“>.</a>»,"«,$link));
?> 
все достаточно просто и, думаю, пояснений не требует. Однако, следует заметить, что этот пример верен в том случае, если плагин не „оборачивает“ ссылки в nofollow и noindex и не добавляет target='_blank'. Если же какая-либо из этих функций плагина будет использоваться, то следует изменить строку поиска str_replace.

В каких ситуациях это может понадобиться? Например вот в такой:

<a href=»<?php $link = rcr_encode('<a href="http://twitter.com/abrezhnev">.</a>');
echo str_replace («<a href=\»","«,str_replace („\“>.</a>»,"«,$link)); ?>»
title="Следите за новостями блога на Twitter. Фолловеров уже
<?php if(function_exists('show_followers_count')) show_followers_count(); ?> «>
Твиттер</a>
Пример 2:
<a href=»<?php $link = rcr_encode('<a href="http://www.rss2email.ru">.</a>');
echo str_replace («<a href=\»","«,str_replace („\“>.</a>»,"«,$link)); ?>» target="_blank">
 <img src="<?php bloginfo('template_directory'); ?>/images/rss2email.png" alt="rss2email" />
</a>

В действии этот код можно увидеть в шапке и сайдбаре моего сайта.