как показывать сообщения, в которых отсутствует meta_value

Как я могу построить запрос для поиска сообщений, которые НЕ содержат определенный мета-ключ или метазначение?

например:

query_posts( array( 'meta_query' => array( array( 'key' => 'feature', 'value' => '_wp_zero_value', 'compare' => '!=' ) ) ) ); 

Solutions Collecting From Web of "как показывать сообщения, в которых отсутствует meta_value"

Получение сообщений без определенного мета- ключа немного сложно, а именно из-за дизайна базы данных и характера соединений SQL.

AFAIK, наиболее эффективным способом было бы фактически захватить идентификаторы сообщений, которые имеют мета-ключ, а затем исключить их из вашего запроса.

 // get all post IDs that *have* 'meta_key' with a non-empty value $posts = $wpdb->get_col( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'my_key' AND meta_value != ''" ); // get all posts *excluding* the ones we just found query_posts( array( 'post__not_in' => $posts ) ); 
 $args = array( 'meta_query' => array( 'relation' => 'OR', //default AND array( 'key' => 'feature', 'compare' => 'NOT EXISTS' ), array( 'key' => 'feature', 'value' => '_wp_zero_value', 'compare' => '=' ) )); $the_query = query_posts($args); var_dump($the_query); 

Читать дальше: WordPress Doc

NB: перед wordpress 3.9 есть ошибка. Так что это работа вокруг

 array( 'key' => 'feature', 'compare' => 'NOT EXISTS', 'value' => '' //add this empty value check for check NOT EXISTS ),