/ Сайтостроение / Wordpress / Выводим записи у которых нет миниатюры

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

26.11.2016

720

Иногда нужно вывести все записи в которых отсутствуют миниатюры. Например, для интернет-магазина с множеством товаров. Сделаем это!

Создаем страницу вывода

Создадим шаблон страницы none-img.php, вначале обязательно прописываем название шаблона:

<?php /*Template Name: Записи без миниатюр*/ ?>

После этого создаем страницу Записи без миниатюр и выбираем шаблон Записи без миниатюр (который мы создали).

Вывод записей без миниатюр

Фактически мы выводим все записи интересующего нас типа и после этого прогоняем через условие Есть ли миниатюра? и если миниатюры нет — выводим заголовок с ссылкой на запись

<?php
global $post;
$args = array(
'posts_per_page' => -1,
'post_type' => array('post','city')
);
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>

<?php if( !has_post_thumbnail() ): ?>

<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>

<?php endif; ?>

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

В данном примере мы запрашиваем типы записей: post (стандартный тип) и city (пользовательский тип).
Если нужно проверять только один тип записи, то можно прописать так: ‘post_type’ => ‘product’ (для товаров woocommerce).
Если нужно проверять стандартные записи, можно это строку вообще убрать..

Счетчик записей

Как посчитать количество записей без миниатюры. Стандартный способ echo count($myposts); не актуален, т.к. он покажет количество записей во всем массиве без проверки на наличие миниатюры


Посчитать записи можно так:

<?php
global $post;
$args = array(
'posts_per_page' => -1,
'post_type' => 'product'
);
$myposts = get_posts( $args );

$i = 0; //начальный показатель счетчика

foreach( $myposts as $post ) : setup_postdata($post); ?>

<?php if( !has_post_thumbnail() ): ?>

<?php $i++; //добавляем +1 к счетчику ?>

<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

<?php endif; ?>

<?php endforeach; ?>

Всего <?php echo $i; //выводим показания счетчика ?> записей без миниатюры.

<?php wp_reset_postdata() ?>

Бонус: Выводим товары без категорий

Если нам нужно вывести все товары которым не назначена категория, то запрос будет следующим:

<?php
global $post;
$terms = get_terms( 'product_cat', array('hide_empty' => 0) );
foreach( $terms as $term ) {

$termsids[] = $term->term_id; //Создаем массив

}

$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $termsids,
'operator' => 'NOT IN'
),
)

);

$myposts = get_posts( $args );

$i = 0;

foreach( $myposts as $post ) : setup_postdata($post); ?>

<?php $i++; ?>

<h5><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h5>

<?php endforeach; ?>

Всего <?php echo $i; ?> записей без категории.

<?php wp_reset_postdata() ?>

Существует еще один более простой способ обнаружения товаров без категорий: В админке в меню Товары у каждого товара есть колонка Категория, если она не заполнена то категория данному товару не назначена. Более того товары без категории можно отфильтровать: в самом низу списка категорий есть строка Без категорий.

Тэги:

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

  • Похожие записи
  • Комментарии
  • Вложения
Изображение для категории товаров

Изображение для категории товаров

В дизайнерских целях иногда требуется выводить изображение для категории товаров. Сделать это можно несколькими способами: плагином, кодом в functions, либо дополнительными полями. При этом кодом в funtions описанном мы будем Читать далее »

/
Несколько миниатюр записи

Несколько миниатюр записи

В некоторых случаях необходимо, чтобы у записи было несколько миниатюр. Например, если запись это товар с несколькими изображениями. Добавим эту возможность при редактировании записи. Плагин Multiple Featured Images После установки Читать далее »

/
Атрибуты миниатюры

Атрибуты миниатюры

У миниатюры (thumbnail) есть служебная функция назначения атрибутов. Манипулируя атрибутами можно добиться интересных результатов. Фильтр wp_get_attachment_image_attributes распространяется на миниатюры, а также на вложенные изображения wp_get_attachment_image($image->ID, ‘rectangle’). Как сделать отложенную загрузку Читать далее »

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

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

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