Intereting Posts
Добавить javascript при публикации публикации почему эти правила rewrite_tags и правила не работают? Использование wp_redirect и .htaccess для повторного маршрута поиска (и передачи оставшихся GET-варов) Проблема с разбивкой по страницам в WordPress / paged Сообщения, показывающие в нем Пользовательский тип сообщения и таксономия постоянные ссылки – Структура Использовать плагин несколько раз Массовое редактирование записей WP для обновления встроенных изображений с помощью новых тегов alt Запрос, выводящий URL-адрес YouTube, а не встроенное видео неавторизованные пользователи не могут отправить форму Шаблон страницы больше не существует – обменные жидкости не будут сохраняться Сайт WordPress со встроенным меню – дает вам разрешение на доступ к /wp-content/themes/xxx/taxonomy-redirect.php на этом сервере Мета-запрос для пользовательской таксономии при вложении Показывать дочерние страницы по меню, используя меню выпадающего меню Superfish? Доступ к идентификатору почты внутри цикла

get_posts – требуется все категории

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

Однако, это AND OR ?

т.е. если вы укажете 2 категории, должно ли быть должно быть сообщение, которое должно быть возвращено?

Если нет, как вы определяете отношение AND ? Мне нужны только сообщения, соответствующие всем категориям.

Solutions Collecting From Web of "get_posts – требуется все категории"

Показать сообщения, которые имеют «все» этих категорий:

 $query = new WP_Query( 'category_name=staff+news' ); 

См. Это в параметрах категории .

get_posts() передает данные WP_Query в качестве аргумента cat как вы можете видеть в источнике :

 1863 if ( ! empty($r['category']) ) 1864 $r['cat'] = $r['category']; 

В источнике также есть примечание:

 1835 * @type int|string $category Category ID or comma-separated list of IDs (this or any children). 1836 * Is an alias of $cat in WP_Query. Default 0. 

Это будет соответствовать такому использованию :

 $query = new WP_Query( 'cat=2,6,17,38' ); 

Если вы запустите этот запрос, вы увидите, что это отношение OR :

 $query = new WP_Query( 'cat=2,6,17,38' ); var_dump($query->request); 

Более конкретно, он использует синтаксис IN() MySQL.

Вы можете нажать все через get_posts() который будет работать с WP_Query чтобы это работало:

 $query = get_posts( 'category_name=staff+news' ); 

Или это:

 $query = get_posts( array('category_name' => 'staff+news' ); 

Тем не менее, чище и аккуратно пропустить get_posts() и использовать WP_Query напрямую. get_posts() на самом деле просто тонкая обертка, и называет меня раздуванием кода. Запрос таксономии даст вам весь необходимый вам контроль:

 $args = array( 'post_type' => 'post', 'tax_query' => array( array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => array( 2,6,17,38 ), 'operator' => 'AND' ), ), ); $query = new WP_Query( $args );