Запиливаем похожие новости без плагинов и смс

Плюсануть
Поделиться
Класснуть

За утро over9000 раз проклянул ябучих школолосеошнеков за засранную ими выдачу по запросу "похожие новости WordPress". Копипиздят друг у друга один и тот же скрипт за своим авторством, блять. Не мог найти нужный скрипт, но всё таки осилил! И, собственно, делюсь с вами.

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

Лепил из двух скриптов, так как в сети два варианта:

  1. Похожие новости с вычислением похожести по тегам
  2. И с вычислением похожести по категориям

Делать по категориям - уныло, повторы новостей идут. А по тегам не везде сработает, ибо не у всех новостей они есть (а заглушка "упс, нет похожих новостей" - пиздёж и провокация). Вот и сделал, что бы отображались похожие статьи, определяемые по тегам, а если нет тегов - по категории. Не слишком хороший вариант, но лучше, чем совсем ничего, либо тупо заглушка.

Собственно сам код:

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
	$tag_ids = array();
	foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
	$args=array(
		'tag__in' => $tag_ids,
		'post__not_in' => array($post->ID),
		'showposts'=>5,
		'orderby' => 'rand'
	);
	$my_query = new WP_Query($args);
	if( $my_query->have_posts() ) {
		echo '<ul>';
		while ($my_query->have_posts()) : $my_query->the_post(); ?>
		<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
		<?php
		endwhile;
	}
	echo '</ul>';
	wp_reset_query();
}
// категории
	else{
		$categories = get_the_category($post->ID);
		if ($categories) {
		$category_ids = array();
		foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
		$args=array(
			'category__in' => $category_ids,
			'post__not_in' => array($post->ID),
			'showposts'=>5,
			'caller_get_posts'=>1
		);
		$my_query = new wp_query($args);
		if( $my_query->have_posts() ) {
			echo '<ul style="margin:0 10px 5px 20px;">';
			while ($my_query->have_posts()) {
				$my_query->the_post();
				?>
				<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
				<?php
			}
			echo '</ul>';
		}
		wp_reset_query();
		}
	}
?>

Вставляем данный код в файл single.php и радуемся. Пытался запилить код в functions.php и вызывать срипт в single.php с помощью такого кода:

<?php seogovno(); ?>

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

И да, вот как выглядит это на Убунтоводе:

Запиливаем похожие новости без плагинов

Пример нахуй не нужен, но должна же из какой то картинки генерироваться превьюшка на морде блога.

А вы как делаете похожие новости? Ставите плагины, которые делают то же самое, что выше, но в довесок поёбывают в жопу сервер, на котором ваш сайт или юзаете какой то более хитрый (куда уж хитрее то?) скриптец? Делитесь!

А прокат звука здесь, на сайте sabram.ru.

Последнее изменение записи: 28.12.2015 | Рубрика: Работа | Метки: ,
Плюсануть
Поделиться
Класснуть