Intereting Posts
WordPress ACF удаляет изображение из медиа-библиотеки Отправлять электронную почту администратору, когда пользователь / член обновляет определенные данные пользователя / члена Как добавить html-код внутри заголовка html с помощью функции? Авто-сообщения Спам на моем блоге WordPress? Фильтрация сообщений по названию категории на основе slug страницы Содержимое не будет загружаться при использовании действия the_content Фильтрация изображений с тегами <meta> Как удалить метабокс с страницы редактора меню? Любые документы для аргумента wp_nav_menu "items_wrap"? Эффективность WordPress – отправить все обменные функции для работы или вызвать его снова Обновление 4.2 utf8mb4 обновления Вложенные URL-адреса CPT + Сообщений 2 Сообщений W3 Total Cache не может действительно обнаружить вещи Пользовательский редактор wysiwyg не выполняет короткие коды? Регистрируясь, всегда делайте в верхнем регистре первую букву логина

Конфликт WP_Query

Я пишу запрос для извлечения экземпляров настраиваемого типа сообщений, созданного мной под названием «Специалист». В запросе я указываю имя и несколько таксономии.
Я хочу получить только тех specialist которые уважают оба параметра.
Если я запускаю два запроса отдельно, вернутся специалисты, но когда я интегрирую их в один запрос, кажется, что post_name занимает приоритет в таксономии.

Например, если я запустил запрос с просьбой specialist названного test с помощью таксономического therapist , я возвращаю specialist называется test даже если он не имеет таксономии therapist .

Вот код:

 $args = array( 'post_type'=>'specialist', 'name' => 'test', 'tax_query' => array( array( 'taxonomy' => 'type', 'field' => 'slug', 'terms' => 'therapist' ) ) ); $specialists = new WP_Query($args); 

Solutions Collecting From Web of "Конфликт WP_Query"

Является ли ваш тип сообщения неиерархическим, как пост или иерархический, как страница? Он определит, какой параметр slug вы должны использовать в WP_Query :

 name (string) - non-hierarchical (post) slug. pagename (string) - hierarchical (page) slug. 

Кроме того, tax_query должен иметь параметр оператора. Возможные значения: «IN», «NOT IN», «AND». Вы должны установить его в «И». Это может быть решением:

 $args = array( 'post_type'=>'specialist', 'postname' => 'test', 'tax_query' => array( array( 'taxonomy' => 'type', 'field' => 'slug', 'terms' => 'therapist', 'operator'=> 'AND' ) ) ); $specialists = new WP_Query($args); 

Если он действительно не работает, вы всегда можете сделать обходной путь, создав функцию фильтрации, чтобы добавить предложение where к запросу

 function filter_where( $where = '' ) { // post_name $where .= " AND $wpdb->posts.post_name = 'test'"; return $where; } add_filter( 'posts_where', 'filter_where' ); $query = new WP_Query( $args ); remove_filter( 'posts_where', 'filter_where' ); 

Да, ваш запрос неверен, вы запрашиваете сообщение «Test», которое является типом «специалиста», а таксономия – «терапевт».

правильным должно быть любое post_name из типа специалиста, с которым имеет тип таксономии, а термин – «терапевт».

 $args = array( 'post_type'=>'specialist', 'tax_query' => array( array( 'taxonomy' => 'type', 'field' => 'slug', 'terms' => 'therapist' ) ) ); specialists = new WP_Query($args); 

Я думаю, это должно быть хорошо.