Перелинковка для wordpress

Добрый день, уважаемы читатели. Сегодня я хочу поговорить об одной очень важной вещи — о перелинковке. В этой статье я расскажу, зачем она нужна, и как сделать правильную перелинковку для wordpress.

Перелинковка для wordpress

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

Итак, я думаю, что Вы уже загорелись создать перелинковку на своем wordpress блоге. Ну, что же, приступим. Однако, есть ещё некоторая информация, которую я обязан вам сказать:

  • Идеальная перелинковка — это не 5 ссылок в конце поста на «похожие записи»
  • Если в силу некоторых обстоятельств (нехватка времени, лень), вы решите сделать перелинковку, как вывод похожих статей, то должны обязательно помнить, что ссылки должны быть только постоянными(!), они никогда не должны изменятся. Если ссылки будут мигающими, то эффекта от перелинковки у вас никогда не будет.
  • Даже если вы делаете перелинковку с помощью скрипта, то должны перед этим продумать её структуру (например, кольцевая, линейная, кольцевая по рубрикам или какая-то другая).
  • Помните, что за простые 5 ссылок в блоке Похожие статьи, Яндекс, если кто-то стуканет, может забанить. В идеале нужно делать ссылку на статью, миниатюру с этой статьи и описание в 50-100 символов. Тут уже никакой стук не страшен.

Теперь, мы дошли до скрипта. Скрипт, который будет представлен ниже, выполняет следующие функции: он берет X (вы задаете это число сами) id статей, находящихся до вашей статьи в этой же рубрике, и выводит ссылки на них. Разберем на примере: у этой статьи id = 255, она находится в рубрике SEO, скрипт найдёт в бд статьи, относящиеся к рубрики SEO и выберет X предыдущих статей, то есть, возьмет статьи с id=249,250,251,252,253,254 (для X=6).

Чем хорош данный скрипт? Во-первых, только у первых X записей ссылки будут моргать, у других записей они будут постоянными. Во-вторых, каждая запись (если статей большем, чем Х), получает ссылки ровно с Х статей. В-третьих, перелинкова идёт по рубрике, что делает статьи на самом деле похожими. В-четвертых, если у вас есть рубрика, куда вы публикуете продажные статьи, то нормальные разделы их не будут прокачивать.

Данный скрипт, я считаю — это лучшая перелинковка для wordpress. Его авторы — владелец одного из лучших блогов по wordpress — dimox.name, и выдающийся человек, автор многих плагинов и скриптов для wordpress — wp-kama.ru.

Скрипт:

<?php
function show_previous_posts_from_category ($the_post_id, $the_category_id = 0, $post_num) {

  $num = 0;
  global $wpdb;

  $sql = "SELECT wposts.*
  FROM $wpdb->posts wposts
  LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
  LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
  WHERE $wpdb->term_taxonomy.taxonomy = 'category'
  AND $wpdb->term_taxonomy.term_id = '$the_category_id'
  AND wposts.post_status = 'publish'
  AND wposts.post_type = 'post'
  AND wposts.ID < '$the_post_id'
  ORDER BY wposts.ID DESC
  LIMIT $post_num";

  $result = $wpdb->get_results($sql, OBJECT);
  global $post;
?>
<ul>
<?php
  foreach ($result as $post) {
    setup_postdata($post);
?>
  <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
<?php
    $num++;
    $save_ids[] = $post->ID;
  }
  if ( $num < $post_num || !$result ) {
    $need_more = $post_num-$num;
    $save_ids[] = $the_post_id;
    $save_ids = join (',', $save_ids);
    $more_posts = get_posts("numberposts=$need_more&amp;category=$the_category_id&amp;exclude=$save_ids");
    foreach ($more_posts as $post){
      setup_postdata($post);
?>
  <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
<?php
    }
  }
?>
</ul>
<?php } ?>

<?php
  $the_cat = get_the_category();
  $the_cat_id = $the_cat[0]->cat_ID;
  show_previous_posts_from_category($post->ID, $the_cat_id, 5);
  wp_reset_query();
?>

Использование: для того чтобы вызвать перелинковку в записи, вы должны в файле single.php (после the_content()) написать скрипт, который я привел выше.

Количество ссылок, которые будет выводить скрипт, изменяется в предпоследней строке. В данном случае скрипт будет выводить 5 последних записей из этой же рубрики.

Если вы захотите сделать перелинковку с миниатюрой и описанием в 50-100 символов, то пишите в комментарии, я дам вам код скрипта, который сделает это (основа моего скрипта — этот скрипт).

———
Обновление. В комментариях попросили добавить код, который выведет похожие записи с миниатюрами и текстовым анонсом. Для того чтобы использовать этот код вам нужно:
1) Установить плагин для ресайза картинок от wp-kama.
2) Добавить в functions.php вашей темы следующий код:

function the_excerpt_max_charlength($charlength) {
   $excerpt = get_the_excerpt();
   $charlength++;
   if(strlen($excerpt)>$charlength) {
       $subex = substr($excerpt,0,$charlength-5);
       $exwords = explode(" ",$subex);
       $excut = -(strlen($exwords[count($exwords)-1]));
       if($excut<0) {
            echo substr($subex,0,$excut);
       } else {
       	    echo $subex;
       }
       echo "...";
   } else {
	   echo $excerpt;
   }
}

3) Добавить в single.php вашей темы код туда, где будет происходить непосредственно вывод похожих записей:

<?php
  $the_cat = get_the_category();
  $the_cat_id = $the_cat[0]->cat_ID;
  show_previous_posts_from_category($post->ID, $the_cat_id, 2);
  wp_reset_query();
?>                

  
<?php // perelinkovka ?>
<?php

function show_previous_posts_from_category ($the_post_id, $the_category_id = 0, $post_num) {

  $num = 0;
  global $wpdb;

  $sql = "SELECT wposts.*
  FROM $wpdb->posts wposts
  LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
  LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
  WHERE $wpdb->term_taxonomy.taxonomy = 'category'
  AND $wpdb->term_taxonomy.term_id = '$the_category_id'
  AND wposts.post_status = 'publish'
  AND wposts.post_type = 'post'
  AND wposts.ID < '$the_post_id'
  ORDER BY wposts.ID DESC
  LIMIT $post_num";

  $result = $wpdb->get_results($sql, OBJECT);
  global $post;
?>
<div class="drugie-stati">
<?php
  foreach ($result as $post) {
	setup_postdata($post);
?>
	<div class="odna_statya">
		<img src="<?php echo kama_thumb_src ('w=100 &h=75 &q=100'); ?>" alt="<?php the_title(); ?>" width="100" height="75" title="<?php the_title(); ?>"  />
		<div class="coderzyanie_odnoj_stati">
			 <a title="<?php the_title(); ?>" href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
			<!--noindex-->
			<?php the_excerpt_max_charlength(412); ?> 
			<!--/noindex-->
		</div>
	</div>
<?php
	$num++;
	$save_ids[] = $post->ID;
  }
  if ( $num < $post_num || !$result ) {
	$need_more = $post_num-$num;
	$save_ids[] = $the_post_id;
	$save_ids = join (',', $save_ids);
	$more_posts = get_posts("numberposts=$need_more&category=$the_category_id&exclude=$save_ids");
	foreach ($more_posts as $post){
	  setup_postdata($post);
?>

	<div class="odna_statya">
		<img src="<?php echo kama_thumb_src ('w=100 &h=75 &q=100'); ?>" alt="<?php the_title(); ?>" width="100" height="75" title="<?php the_title(); ?>"  />
		<div class="coderzyanie_odnoj_stati">
			 <a title="<?php the_title(); ?>" href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>

			  <!--noindex--><?php the_excerpt_max_charlength(100); ?><!--/noindex-->
		</div>
	</div>
<?php
	}
  }
?>
</div>
<?php } ?>

4) По желанию в строке вместо 100 указать свою длину анонса. Помните, что реальная длина будет в 2 раза меньше. То есть, если вы указали 100, длина анонса будет составлять 50 символов.

Категории: SEO wordpress

Метки: , ,


  • Александр

    Здравствуйте! Очень полезная статья, но меня заинтересовал ваш скрипт перелинковки с миниатюрой и описанием в 50-100 символов

    Буду очень благодарен, если дадите его

    • Денис

      Добрый день. Да, конечно дам, почему бы и нет.
      Сейчас добавлю в пост.

  • Александр

    Огромное вам спасибо за быстрый ответ. Очень рад, что попал на ваш сайт. Для меня был очень важен этот скрипт, так как от плагинов перелинковки решил отказаться. Во всех плагинах, которые я устанавливал, ссылки были мигающими и хотелось это исправить, но не знал как, так как было необходимо вставить и выдержку из текста статьи
    Спасибо за этот скрипт!)

    • Денис

      Всегда рад помочь. Если будут вопросы, можете писать их в комментарии, а я буду отвечать на них в новых записях.

  • Олег

    Привет.
    Пробую установить записи с миниатюрами и текстовым анонсом, но если установить в сингл этот код, после него режет все остальное с сайте, просто не отображает. В чем загвоздка может быть?

    • Привет. Могу предположить, что плагин Камы не установлен.

      • Олег

        установил, активировал, дал права, не работает, проверял на 2 разных сайтах

        • Тогда советую в файле wp-config.php включить отображение ошибок. Можете запостить текст ошибки сюда, я подумаю, что у вас там не так.

  • Александр

    Сделал всё как написано, установил плагин, активировал, добавил коды в functions.php и single.php. Но на том месте где должен быть вывод перелинковки с картинками. выводит вот такое:
    Fatal error: Call to undefined function show_previous_posts_from_category() in Z:\home\aromat\www\wp-content\themes\EstateBlog\single.php on line 28

    28-ая строка, это 4-ая строка с начала вашего кода, вот она:
    show_previous_posts_from_category($post->ID, $the_cat_id, 2);

    Подскажите пожалуйста как исправить.