Мне нужно исключить из запроса категорию и несколько пользовательских таксономий.
Правильно ли этот код? Этот запрос не исключает какой-либо пост, тот, у кого есть категория, или пользовательская таксономия. Что я делаю не так?
<?php $args = array( 'post_type' => 'post', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'ubicacion', 'field' => 'slug', 'terms' => array( 'ruperto-concha', 'estallido', 'vineta', 'vitrina', 'letrero', 'plenoempleo', 'primero' ), 'operator' => 'NOT IN' ), array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => array( 'las-informasiones' ), 'operator' => 'NOT IN' ) ) ); $query = new WP_Query( $args ); ?>
Примечание. Мне нужно исключить пост с этой категорией или с любой из этих пользовательских таксономий. Любое из обоих условий.
Извините за плохой английский.
ОБНОВИТЬ
Я намеревался использовать этот код
<?php $args = array( 'post_type' => 'post', 'tax_query' => array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => array( 'las-informasiones' ), 'operator' => 'NOT IN' ) ); $query = new WP_Query( $args ); ?>
даже это:
<?php $args = array( 'post_type' => 'post', 'tax_query' => array( 'taxonomy' => 'category__not_in', 'field' => 'slug', 'terms' => array( 'las-informasiones' ), ) ); $query = new WP_Query( $args ); ?>
и, нет. В wp есть некоторая проблема с wp-запросом и категориями? Кто-нибудь знает?
ИНФОРМАЦИЯ О MOAR
Это мой собственный налоговый код. Я использовал автоматический генератор.
function register_taxonomy_ubicacion() { $labels = array( 'name' => _x( 'Ubicaciones', 'ubicacion' ), 'singular_name' => _x( 'Ubicación', 'ubicacion' ), 'search_items' => _x( 'Hurgar en ubicaciones', 'ubicacion' ), 'popular_items' => _x( ' Ubicaciones más usadas', 'ubicacion' ), 'all_items' => _x( 'Todos', 'ubicacion' ), 'parent_item' => _x( 'Parent Ubicación', 'ubicacion' ), 'parent_item_colon' => _x( 'Parent Ubicación:', 'ubicacion' ), 'edit_item' => _x( 'Editar', 'ubicacion' ), 'update_item' => _x( 'Actualizar Ubicación', 'ubicacion' ), 'add_new_item' => _x( 'Añadir Ubicación', 'ubicacion' ), 'new_item_name' => _x( 'Nueva Ubicación', 'ubicacion' ), 'separate_items_with_commas' => _x( 'separelas con comas', 'ubicacion' ), 'add_or_remove_items' => _x( 'Añadir o remover ubicación', 'ubicacion' ), 'choose_from_most_used' => _x( 'Escoger de las más usadas', 'ubicacion' ), 'menu_name' => _x( 'Ubicaciones', 'ubicacion' ), ); $args = array( 'labels' => $labels, 'public' => true, 'show_in_nav_menus' => true, 'show_ui' => true, 'show_tagcloud' => false, 'show_admin_column' => true, 'hierarchical' => false, 'rewrite' => true, 'query_var' => true ); register_taxonomy( 'ubicacion', array('post'), $args ); }
Измените 'relation' => 'OR'
на 'relation' => 'AND'
чтобы применить оба исключения к всем возвращенным сообщениям. Это может показаться нелогичным, но сообщение, которое удовлетворяет одному из исключений, будет включено, даже если оно не удовлетворяет другому.
РЕДАКТИРОВАТЬ
Из кода, связанного в вашем комментарии ниже, это генерируемый запрос:
SELECT SQL_CALC_FOUND_ROWS duk_posts.ID FROM duk_posts WHERE 1=1 AND 0 = 1 AND duk_posts.post_type = 'post' AND (duk_posts.post_status = 'publish' OR duk_posts.post_status = 'private') GROUP BY duk_posts.ID ORDER BY duk_posts.post_date DESC LIMIT 0, 10
как вы можете видеть, нет ничего, что связано с категорией или таксономией, а WHERE
является недопустимым условием, которое никогда не могло быть правдой. Это заставляет меня думать, что ваша пользовательская таксономия не регистрируется правильно, поэтому при запуске запроса она рассматривается как недействительная таксономия и поэтому создает этот недопустимый запрос. Я угадаю, что вы регистрируете таксономию на неправильном крючке или как-то ошибаетесь.