in_category(). Вивід усіх матеріалів окрім зайвої категорії WordPress

Хоч цей проект і задумувався як навчальний — щоб бодай трохи збільшити процент україномовного контенту — проте в якийсь момент я помітив, що ведення щоденника дозволяє краще структуризувати свій розвиток і подивитись на ситуацію збоку.

Аби так звані робочі записки не плутались під ногами людям, які прийшли сюди за уроками, не навчальні матеріали варто прибрати з основної стрічки.

Для робочих записок створюємо додаткову категорію, штибу “не дай собі всохнути”. Тепер робимо таблетку, аби матеріали, котрі підв’язані до цього розділу не виводились на головній.

Будучи людиною лінивою, я не став створювати власну тему WordPress і взяв за основу щось стандартне. Тому цикл виводу матеріалів на головній в мене такий:

while ( have_posts() ) : the_post();

/*
 * шматок вставки,який відповідає за вивід контенту
 */
 get_template_part( 'template-parts/content', get_post_format() );

// End the loop.

Про цей цикл та варіанти його маніпуляцій ми ще поговоримо іншим разом, а на разі найпростішим вирішенням буде виставити умову з використанням in_category():

<?php if ( !in_category(3) ) { ?>
   # вставляємо вивід контенту        
 <?php }

in_category( $category, $post) — вбудована функція вордпресу, яка скаже, чи належить даний пост до вказаних в дужках категорій.

Як бачите, класична конструкція передбачає параметри категорії та публікації. Проте, оскільки наша функція знаходиться всередині циклу, який перебирає матеріали, ми залишаємо лише перший параметр.

Є ще такий варіант використання

if ( !in_category( array('WordPress', 'php'), 777 )) { 
// робимо щось корисне
}

Тут варто звернути увагу на два моменти подачі першого параметру array(‘WordPress’, ‘php’) :

  • якщо ми хочемо подати список категорій на перевірку, то робити це найкраще з допомогою масиву;
  • в якості параметру можна подавати як id категорії так і її slug — в цьому випадку загортаємо дані в лапки.

Спосіб може бути не зовсім ефективний, оскільки ми спочатку виводимо всі записи, а вже потім в циклі відіюємо непотрібні. Для більш гнучкої фільтрації задавати умови можна ще на початку запиту в базу даних з допомогою функції wp_get_recent_posts().

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