В статье предлагается способ маскировки ссылок в шаблоне темы, содержащих php-код, изображения или скрипты с помощью плагина RC Link Redirector. А также рассматриваются некоторые «фишки» при использовании функций этого плагина.
В жизни любого блога наступает момент, когда возникает необходимость в маскировке внешних ссылок. Причин может быть много, но наиболее частые — монетизация блога и желание скрыть ссылки в комментариях к постам, которые зачастую оказываются спамом. Для этих целей существует огромное количество плагинов к 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 класс, отменяющий обработку ссылки.
- Обеспечивает высокий уровень защиты от несанкционированного использования редиректа
- Если текст сам является ссылкой меняет его на [ссылка]
Преобразование ссылок выглядит следующим образом:[code lang=»html»]<a href=»http://www.site.com»>Super Site</a>
<a href=»http://archive.brezhnev.pro/ck03b2/XkVCQQIeGABbBgdITEELQlMTQQBEQUpeRV9K/»>Super Site</a>
<a href=»http://www.site.com»>http://www.site.com</a>
<a href=»http://archive.brezhnev.pro/ck03b2/XkVCQQIeGABbBgdITEELQlMTQQBEQUpeRV9K/»>[ссылка]</a>[/code]
Все замечательно кроме одного — ссылки размещенные в шаблоне темы или текстовых виджетах обрабатываться не будут. Обидно? Наверное, но решение существует и лежит в общем-то на поверхности: достаточно внимательно изучить файл плагина, чтобы обнаружить функцию rcr_encode. Именно она нам и нужна для шифрования и редиректа ссылок. Синтаксис вызова функции достаточно простой:
[code lang=»php»]<?php echo rcr_encode(‘<a href=»http://www.site.com/»> Super Site </a>’); ?>[/code]
Достаточно вставить это код в нужное место темы и на выходе получить зашифрованную ссылку. Обратите внимание, что текст внутри тегов не должен сам являться ссылкой, т.е. не должен содержать ‘http://’ . Сложные конструкции, типа <a><img /></a> также обрабатываются корректно, но только в том случае, если вызов картинки не содержит php-кода или скриптов. Если же код внутри ссылки присутствует, то функция rcr_encode возвращает строку без изменения. Но и это ограничение легко обходится.
Для решения этой задачи можно применить вот такую конструкцию:[code lang=»php»]<?php
$link = rcr_encode(‘<a href=»http://www.site.com»>.</a>’);
echo str_replace («<a href=\»»,»»,str_replace («\»>.</a>»,»»,$link));
?>[/code] все достаточно просто и, думаю, пояснений не требует. Однако, следует заметить, что этот пример верен в том случае, если плагин не «оборачивает» ссылки в nofollow и noindex и не добавляет target=’_blank’. Если же какая-либо из этих функций плагина будет использоваться, то следует изменить строку поиска str_replace.
В каких ситуациях это может понадобиться? Например вот в такой: [code lang=»html»]<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>[/code]
В действии этот код можно увидеть в шапке и сайдбаре моего сайта.
Свежие комментарии