Исключить определенную категорию из последних обновлений

Я создаю веб-сайт. Существует столбец для последних обновлений. Это код, который у меня есть сейчас. Я не очень хорошо разбираюсь в php-кодировании. Хотелось бы получить указания от кого-то.

<?php $postslist = get_posts('numberposts=1&order=DESC&orderby=date'); foreach ($postslist as $post) : setup_postdata($post); ?> <?php the_excerpt(); ?> <p class="date"><?php echo get_the_date(); ?></p> <span class="button"> <a href="<?php the_permalink(); ?>">Read More</a> 

Но я хотел бы исключить некоторые должности из определенных категорий. Есть ли какое-нибудь решение, чтобы это произошло? Спасибо!

В дополнение к ответу Тима, всегда можно использовать правильный tax_query . Все встроенные параметры тегов и категорий преобразуются в надлежащую tax_query перед WP_Tax_Query классу WP_Tax_Query для создания предложения JOIN для SQL-запроса.

Я использую tax_query почти во всех приложениях, поскольку он дает много гибкости, особенно когда речь идет о детских терминах, исключениях нескольких терминов и даже нескольких таксономиях. Возможно, единственное падение состоит в том, что вы не можете использовать синтаксис строк здесь, как в OP, bacause, поскольку tax_query – это массив, следует использовать синтаксис массива для аргументов запроса

Короче говоря, чтобы исключить категории, вы можете попробовать следующее

 $args = [ // Your other args 'tax_query' => [ [ 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => [1,2,3], // Array of term ids to exclude 'operator' => 'NOT IN', // Exclude 'exclude_children' => false // Do not exclude the child terms from the terms defined to exclude ] ] ]; $postslist = get_posts( $args ); 

Из краткого обзора документации для get_posts () не похоже, что вы можете исключить запись в зависимости от ее категории.

EDIT: На самом деле, благодаря AntonChanning , вы можете – просто добавьте &cat=-1 в строку аргумента, где 1 – это идентификатор категории, которую вы хотите исключить:

 $postslist = get_posts('numberposts=1&order=DESC&orderby=date&cat=-1'); 

Вы также можете добавить к нему несколько категорий, если вам нужно, например. cat=-1,-2,-3


Предпочтительным способом «Wordpress» для этого является использование WP_Query .

Если вы хотите сделать это таким образом, вместо своего вызова get_posts() вам нужно будет создать новый экземпляр WP_Query и передать свои аргументы в массив. Из приведенной выше ссылки в разделе « Параметры категории» :

category__not_in (массив) – используйте идентификатор категории

Это аргумент, который вы хотите использовать для исключения категории:

 $postslist = new WP_Query(array( "post_type" => "post", "posts_per_page" => 1, "order" => "DESC" "orderby" => "date", "category__not_in" => 1, )); 

Вы заметите, что я также добавил тип публикации post, чтобы имитировать поведение, которое вы имели бы с помощью get_posts() , а параметр posts_per_page – это способ указать количество сообщений, возвращаемых с помощью WP_Query.

Еще одно изменение, которое вам нужно будет сделать, если вы идете вниз, этот маршрут WP_Query состоит в том, чтобы использовать цикл while вместо текущего foreach . В разделе « Использование» в документах есть четкие примеры использования, поэтому я избегу их копирования и вставки.

Удачи!