Viber, Telegram
+38 066 7342127
Call me
+372 55916393

Рекомендуемые статьи на WordPress без плагина

Бер 13, 2019 Блог
Рекомендуемые статьи на Wordpress без плагина

Вручную устанавливаем в админке посты, которые хотим вывести

Делаем через произвольные поля.

Для этого нам нужно зайти на страницу редактирования поста и указать там посты, которые мы добавим в «Похожие записи».

Как это делается, показано на скриншоте:

Рекомендуемые статьи на Wordpress без плагина

  • В качестве названия произвольного поля можете использовать любое, которое ещё не было задействовано на вашем сайте (какие были задействованы, можно узнать, нажав на выпадающий список —Выбрать—). Как видно по скриншоту, я использовал my_related_posts.
  • Значением произвольного поля будет перечисление ID-ов похожих постов через запятую (без пробелов). Чтобы узнать ID поста, просто перейдите на его страницу редактирования и посмотрите на URL.
  • Если у вас нет такого блока с произвольными полями, в правом верхнем углу откройте вкладку «Настройки экрана» и напротив «Произвольные поля» поставьте галочку.Рекомендуемые статьи на Wordpress без плагина

Вы также можете не использовать стандартный не очень удобный метабокс произвольных полей, а создать свой собственный (допустим с выпадающим списком названий постов, так как задавать их по ID не очень и удобно).

 

Это все хорошо, но чтобы код ратал нужно настроить вывод релевантных постов

Итак, сразу код, вставляем туда, где хотим вывести похожие посты:

/ проверяем, заданы ли похожие посты в админке
if( $my_related_post_ids = get_post_meta($post->ID, 'my_related_posts', true)) :
	$related_args = array(
		'posts_per_page' => -1, // сколько постов будет указано в админке, столько и выведется
		'post__in'=> explode(',', $my_related_post_ids), // в качестве значения нужно будет передать массив
		'orderby' => 'post__in' // посты будут сортироваться в том же порядке, в котором они перечислены в админке
	);
	$bzk_query = new WP_Query( $related_args );
 
	// если посты, удовлетворяющие нашим условиям, найдены
	if( $bzk_query->have_posts() ) :
 
		// выводим заголовок блока похожих постов
		echo '<h3>Похожие посты</h3>';
 
		// запускаем цикл
		while( $bzk_query->have_posts() ) : $bzk_query->the_post();
			// в данном случае посты выводятся просто в виде ссылок
			echo '<a href="' . get_permalink( $bzk_query->post->ID ) . '">' . $bzk_query->post->post_title . '</a>';
		endwhile;
	endif;
 
	// не забудьте про эту функцию, её отсутствие может повлиять на другие циклы на странице
	wp_reset_postdata();
endif;

В этом случае будет выводиться просто ссылка.

Чтобы вывести красиво с миниатюрой записи и форматированием, я создала новый шаблон content1

// проверяем, заданы ли похожие посты в админке
if( $my_related_post_ids = get_post_meta($post->ID, 'my_related_posts', true)) :
	$related_args = array(
		'posts_per_page' => -1, // сколько постов будет указано в админке, столько и выведется
		'post__in'=> explode(',', $my_related_post_ids), // в качестве значения нужно будет передать массив
		'orderby' => 'post__in' // посты будут сортироваться в том же порядке, в котором они перечислены в админке
	);
	$bzk_query = new WP_Query( $related_args );
 
	// если посты, удовлетворяющие нашим условиям, найдены
	if( $bzk_query->have_posts() ) :
 
		// выводим заголовок блока похожих постов
		echo '<h3>Рекомендуемые статьи</h3>';
 
		// запускаем цикл
		while( $bzk_query->have_posts() ) : $bzk_query->the_post();
			// в данном случае посты выводятся по шаблону								
			echo '<a href="' . get_template_part( 'content1','') . '">' .  '</a>';
	endwhile;
	endif;
 
	// не забудьте про эту функцию, её отсутствие может повлиять на другие циклы на странице
	wp_reset_postdata();
endif;

Смотрите Live demo под постом 🙂

 

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *