Многие 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 программиста Константина Крылова.

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

http://noted.org.ua/2453


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

2 комментария

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

  2. Нужно смотреть на сам скрипт.
    Возможно нужно дополнительно в скрипте указать https.

Add your comment now

Please note: JavaScript is required to post comments.