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

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

HIT

11.11.2016

2474

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

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

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

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

<?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 );

?>
[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Миниатюры меток

Миниатюры меток

Создадим для терминов таксономии метки изображения (миниатюры). Произвольными полями делаем поле «миниатюра (изображение)» в метках. Там где надо вывести миниатюру ставим Для того чтобы вывести список всех меток с миниатюрами, Читать далее »

/
Шорткод вывода товаров по метке

Шорткод вывода товаров по метке

Иногда требуется быстро вывести товары с определенной меткой. Данный шорткод проверял лично — работает. В данной функции предусмотрен вывод товаров по колонкам (wc_get_loop_prop( ‘columns’ )). Шорткод выглядит так: Данный шорткод Читать далее »

/
Сортировка по меткам

Сортировка по меткам

Делаем функционал сортировки постов по меткам Выводим все метки включенные в данную категорию Добавляем скрипт в header (при добавлении к div post_class()) В скрипте прописываем имеющиеся метки Код в шаблон Читать далее »

/

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

Notice: Функция WP_Styles::add вызвана неправильно. Стиль с дескриптором "editor-buttons" был поставлен в очередь с незарегистрированными зависимостями: dashicons. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.9.1.) in /home/t/tiberi6w/opttour.ru/public_html/wp-includes/functions.php on line 6131

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

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