Intereting Posts
Удалите «-2» из URL-адреса «Типы элементов» с тем же именем Предложения по подходу к новому плагину Я застрял AWS Bitnami WordPress – команда SELECT, запрещенная пользователю Как присоединиться к таблицам? Какую таблицу хранит порядок сортировки носителей? Результаты поиска Search.php по-разному основаны на типе post Увеличение загрузки процессора из-за спама admin-ajax.php Переписать правила и запрос для виртуальной страницы Как получать сообщения и комментарии в час, в год и в месяц? Firebug и Chrome отображают два тега тела Это плохой подход, чтобы добавить условные комментарии к wp_head? Пользовательская константа post postink использует страницу архива для отображения сообщений Как изменить ярлык «Все категории» в панели моего пользовательского типа сообщений? Я хочу добавить японскую версию WordPress. Как создать вторую копию моего сайта WordPress (AWS Windows 2012 R2 IIS)? Получить идентификатор страницы WordPress внутри настраивателя

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 );