/ Сайтостроение / Wordpress / Автоматическая разбивка записей по тегам

Автоматическая разбивка записей по тегам

11.11.2016

711

Автоматически разбиваем записи определенной категории по тегам. Подробнее: у нас есть определенное количество записей в какой-либо категории, при этом у некоторых записей заданы теги. Выводится будет так: Сначала записи с одним тегом, затем записи с другим тегом и т.д, после записей с тегами выводятся остальные записи, кроме записей которые выводились с тегами.

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

Данный функционал может подойти для полной разбивки записей категории по каким-либо дополнительным признакам.

Выводим теги и записи с ними

<?php

$getcat = get_the_category();
$cat_id = $getcat[0]->term_id;
$args = array( 'posts_per_page' => -1, 'cat' => $cat_id );
$catposts = get_posts( $args );

foreach( $catposts as $post ){

setup_postdata($post);

$all_tag_objects = get_the_tags();

if($all_tag_objects){

foreach($all_tag_objects as $tag) {

if($tag->count > 0) { $all_tag_ids[] = $tag->term_id; }

}
}
}

wp_reset_postdata();

if ( $tag->count > 0 ): ?>

<?php $tag_ids_unique = array_unique($all_tag_ids); ?>

<?php foreach($tag_ids_unique as $tag_id): ?>

<?php $post_tag = get_term( $tag_id, 'post_tag' ); //Получаем данные по термину таксономии ?>

<h2><?php echo $post_tag->slug; ?></h2>

<?php

$args = array(
'tag' => $post_tag->slug,
'cat' => $cat_id,
'posts_per_page' => -1
);

$posts = get_posts($args);

$i = 1;

foreach ($posts as $post) :

if ($i === 1) { $new_class = "first-post"; }
elseif ($i % 3 == 0) {$new_class = "last-post"; $i = 0; }
else { $new_class = ""; }

include(TEMPLATEPATH."/solus.php");
$i++;
endforeach;

wp_reset_query(); ?>
<?php endforeach; ?>

<?php endif; ?>

$all_tag_ids — уникальные теги собранные из массива записей данной категории, эту переменную будем использовать в следующем шаге.

Изменяем основной запрос

Изменяем глобальный запрос WP, добавляя в него параметр tag__not_in со значением переменной $all_tag_ids

<?php

global $query_string;
// добавляем базовые параметры в массив $args
parse_str($query_string, $args);
// добавляем/заменяем параметр в массиве
$args['tag__not_in'] = $all_tag_ids;
query_posts( $args );

?>

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Облако меток, категорий, таксономий

Облако меток, категорий, таксономий

В wordpress есть внутренняя функция выводить облако меток. Также можно выводить облака категорий и терминов таксономий. Стандартное облако меток Вывести облако тегов <?php wp_tag_cloud(''); ?> Облако меток Создаем облако меток, Читать далее »

Отключить категорию, метку

Отключить категорию, метку

У терминов таксономий (категории, метки) WordPress отсутствует функция отключения, их можно только удалить. Это не всегда удобно, при этом термин удаляется и из всех записей к которым он привязан. Бывает Читать далее »

Использование меток

Использование меток

Метки (тэги) — стандартная таксономия wordpress (не иерархическая). Рассмотрим варианты использования меток на сайте. Метки как дополнительная таксономия Использовать метки можно как дополнительную таксономию, т.е. еще один вид упорядочивания записей. Читать далее »

Добавить комментарий

Пока нет комментариев. Будь первым!

Автоматическая разбивка записей по тегам
Хуки для woocommerce
Рекомендации для васХуки для woocommerceOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.