Многие SEO-шники знают как влияет ссылочная масса с его сайта на внешние ресурсы, поэтому я предлагаю вариант для экранирования некоторых ссылок (иногда это просто необходимо).
Также очень помогает, от тех кто дублирует контент сайта, не устанавливая ссылку на первоисточник.
И как правило, те кто копирует — это начинающие блогеры и они просто копируют вместе с ссылкой (даже проще сказать — часть вашего кода), увеличивая вам ссылочную массу. О чём я говорю, поймёте немножко ниже, дочитав до конца статьи.
Но бывает и так, что нужно некоторые ссылки оставить без экранирования, например если вы ссылаетесь на какой-то источник, или продаёте ссылки со своего блога, то вам необходимо дописать ещё немного кода — что бы ссылки не экранировались. Также от спама — в постах иногда необходимо экранирование и т.д.
В общем сам код:
1. Открываем редактор используемой темы и редактируем файл functions.php.
В него дописываем:
<?php function preg_callback2($matches) { $url = explode(':', $matches[2]); if (($url[0] == 'http') || ($url[0] == 'https')) { $need = "http://noted.org.ua"; $replace = "http://noted.org.ua/redirect.php?"; if (!preg_match('/rel="dofollow"/i',$matches[0])) { if (substr($matches[2], 0, strlen($need)) != $need) { $matches[2] = $replace.$matches[2]; } } } return $matches[1].$matches[2].$matches[3]; } function removeLinks($content) { if (! is_feed()) { $content = preg_replace_callback('@(]*href=")([^>\"]*)("[^>]*>)@i', "preg_callback2", $content); $content = preg_replace_callback('@(]*href=\')([^>\"]*)(\'[^>]*>)@i', "preg_callback2", $content); } return $content; } add_filter('the_content', 'removeLinks'); add_filter('comment_text', 'removeLinks'); add_filter('get_comment_author_link', 'removeLinks'); add_filter('get_comment_author_url_link', 'removeLinks'); add_filter('comment_url', 'removeLinks'); add_filter('wp_list_bookmarks', 'removeLinks'); ?> |
wp_list_bookmarks – функиция, используемая для отображения ссылок из blogroll, если вы используете другую функцию замените на другое значение.
2. Создаём файл redirect.php, который помещаем в корень сайта, со следующим кодом:
<?php $uri = ""; if (array_key_exists("QUERY_STRING", $_SERVER)) { $uri = $_SERVER["QUERY_STRING"]; } header("Location: ".$uri); ?> |
3. Запрещаем индексирование обрабатываемых ссылок поисковиками. В корне сайта, в файле robots.txt пишем(дописываем):
User-Agent: * Disallow: /redirect.php |
4. Если нужно, чтобы в браузере ссылки выглядели как обычно после открытия <body> подключаем jquery и следующий js-скрипт:
$(document).ready(function(){ $("a").each(function(i){ var remove_str = 'http://noted.org.ua/redirect.php?'; var str = this.href.substring(0, remove_str.length); if (str == remove_str) { this.href = this.href.substring(remove_str.length); } }); }); |
Ну, вот и всё. Всё что до 4го пункта — это очень помогает делать, то что описано в начале статьи, а с 4м пунктом — теряется весь смысл. И теперь при создании поста, если вы в ссылке пропишете rel=»dofollow», то сылка будет отображаться без экранирования, а без этого — с редиректом.
Пример:
<a href="http://noted.org.ua/2453" title="Экранирование внешних ссылок на WordPress.">Экранирование внешних ссылок на WordPress.</a> |
— вот эта будет с ссылкой на вас, а вот так:
<a href="http://noted.org.ua/2453" title="Экранирование внешних ссылок на WordPress." rel="dofollow">Экранирование внешних ссылок на WordPress.</a> |
будет без экрана — как обычная ссылка.
Материал всят с сайт-блога web программиста Константина Крылова.
Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:
Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)
Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455
У меня похожий скрипт, но почему то на сайте с https не хочет работать. Идет тупо переадесация на главную станицу при попытке перехода на внешний ресурс.
Нужно смотреть на сам скрипт.
Возможно нужно дополнительно в скрипте указать https.