Автоматически делаем теги в статьях ссылкой или выделяем ключевые слова

Каждый веб-мастер, хотя бы на базовым уровне, знаком с оптимизацией сайта. Это на самом деле очень тонкая работа, так как в ней всегда будет больше разногласий чем в любой другой. Тут не может быть на 100% устойчивой позиции в любом из вопросов. Даже если руководствоваться всеми рекомендациями поисковиков, то результат не всегда дает должный эффект. В то время как какой-то ужасный сайт (содержащий кучу копипаста, плохое оформление и прочее) находится в Топ выдачи, опередив более качественных конкурентов.

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

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

К чему все это?

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

Откройте файл functions.php вашей текущей темы и в конце перед знаком ?> добавьте следующий фрагмент кода:

$match_num_from = 1;
$match_num_to = 2;
function tag_sort($a, $b){
        if ( $a->name == $b->name ) return 0;
        return ( strlen($a->name) > strlen($b->name) ) ? -1 : 1;
}
function tag_link($content) {
        global $match_num_from,$match_num_to;
         $posttags = get_the_tags();
         if ($posttags) {
                 usort($posttags, "tag_sort");
                 foreach($posttags as $tag) {
                         $link = get_tag_link($tag->term_id);
                         $keyword = $tag->name;
                         //Подключение функции
                         $cleankeyword = stripslashes($keyword);
                         $url = "<a href=\"$link\" title=\"".str_replace('%s',addcslashes($cleankeyword, '$'),__('Показать все записи с тегом %s'))."\"";
                         $url .= ' class="tag_link"';
                         $url .= ">".addcslashes($cleankeyword, '$')."</a>";
                         $limit = rand($match_num_from,$match_num_to);
                
             $content = preg_replace( '|(<a[^>]+>)(.*)('.$ex_word.')(.*)(</a[^>]*>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
                         $content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
                                $cleankeyword = preg_quote($cleankeyword,'\'');
                                        $regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'s' . $case;
                                $content = preg_replace($regEx,$url,$content,$limit);
        $content = str_replace( '%&&&&&%', stripslashes($ex_word), $content);
                 }
         }
    return $content;
}
add_filter('the_content','tag_link',1);

Обратите внимание на две первые строки:

$match_num_from = 1;
$match_num_to = 2;

Эти параметры задают диапазон замен, который потом случайным образом меняется. То есть если указать, например, 1-5, то будет сгенерировано случайное число от 1 до 5, и будет произведено такое же количество замен в тексте. Рекомендуется 1-2.

Источник: http://www.wpdaxue.com/auto-add-tag-link.html

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *