Одна и та же статья может находится в разных разделах сайта на WordPress. Иногда требуется, чтобы статьи определённого раздела не выводились в конкретных других разделах. При этом требуется, чтобы в сами эти разделы эта статья входила.
Зачем может понадобится такая «каша»? Ведь можно сразу не добавлять статью в раздел, в котором не хочется её выводить.
Как ни странно, это всё же может потребоваться. Иногда необходимо статью пометить названиями разделов, потому что она к ним соотносится. И эта статья будет видна, скажем на главной странице, но в других конкретных разделах её показывать не нужно.
Для такой задачи используем следующий код в файле functions.php:
function exclude_category( $query ) {
if ( $query->is_category(array(name_cat1,name_cat2)) || is_tag() )
{
$query->set('cat', '-71');
}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');
где:
name_cat1,name_cat2 — перечисленные навания (slug) категорий в которых требуется статью не отображать.
-71 — ID раздела, который следует исключить из вышеприведенных категорий.