Это должно делать то, что вы хотите. Не уверен, почему у вас было заявление if
, поэтому не стесняйтесь включать его снова, если вам это нужно. Вы всегда можете просто использовать category
и дать ему идентификатор вместо category_name
, как я использую здесь в качестве ярлыка.
$exclude_cat = get_cat_ID('hidden');
$include_cat = get_cat_ID('top-menu');
$myposts = get_posts( array(
'numberposts' => 5,
'category__in' => array( $include_cat ),
'category__not_in' => array( $exclude_cat )
));
РЕДАКТИРОВАТЬ: category_name
нельзя комбинировать с category__not_in
, поэтому я немного изменил код, чтобы оба фильтра были запущены.
Я проверил это, и оно работает в WordPress 2.8, просто обязательно укажите реальное имя категории в вызовах get_cat_ID
, а не slug
случайно.