derzost_namereniya
@derzost_namereniya
Куплю сайт

Как проверить пост на наличие тегов в WordPress?

Подскажите, как проверить текущий пост на наличие тегов и, если они есть, с такими же (!) тегами вывести похожие посты. Сейчас у меня выводятся посты или входящие в конкретную категорию или с точно заданным тегом, пример:
<?php
    $arg = array (
        'tag__in' => 166, // выводить посты, имеющие такой тег
        'posts_per_page' => 3, // сколько постов выводить
        'orderby' => rand // рандомно
    );
?>
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
// проверяем наличие тегов
	if ( has_tag() ) {
		$tags = wp_get_post_tags( get_the_ID() );

		$tags_array = array();
		foreach ( $tags as $key => $tag ) {
			$tags_array[] = $tag->term_id; // собираем в массив
		}

		$args = array (
			'post_type' => 'post',
			'tag__in' => $tags_array, // получаем посты, имеющие такой же тег
			'post__not_in' => array( get_the_ID() ), // исключаем текущий пост
			'posts_per_page' => 3,
			'orderby' => rand
		);
	} else {
		// или получаем любые последние посты
		$args = array (
			'post_type' => 'post',
			'posts_per_page' => 3,
			'orderby' => date
		);
	}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
derzost_namereniya
@derzost_namereniya Автор вопроса
Куплю сайт
Почему-то не срабатывает этот блок кода: попался пост с новым тегом, (тега больше нигде нет - только для этой страницы), но никакие последние посты не выводятся, согласно этому коду. В чём может быть проблема?
Может потому что, сама страница имеет тег, он учитывается и else уже игнорируется?
} else {
    // или получаем любые последние посты
    $args = array (
      'post_type' => 'post',
      'posts_per_page' => 3,
      'orderby' => date
    );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы