Использование WP_Query для получения вложения возвращает пустой набор

Я хотел бы получить первый аудиофайл в медиа-библиотеке, отфильтрованной настраиваемым полем, но всегда возвращает пустой набор сообщений. Я знаю, что мне нужно передать 'post_status' => 'inherit' 'post_type' => 'attachment' и 'post_type' => 'attachment' , но это ничего не меняет.

 <?php // Arguments $args = array( 'post_type' => 'attachment', 'post_status' => 'inherit', 'post_mime_type' => 'audio', 'meta_key' => 'my_meta_key', 'meta_value' => 'my_meta_value', 'posts_per_page' => 1 ); // Create the query $audio_files = new WP_Query( $args ); // Output var_dump( $audio_files ); // the number of found posts is always 0 ?> 

Поэтому я попытался свести к минимуму его, отбросив все мета-ключи и искал любое приложение (как упоминалось здесь )

 <?php // Arguments $args = array( 'post_type' => 'attachment', 'post_status' => 'inherit' ); // or "any", but without effect // Create the query $any_files = new WP_Query( $args ); // Output var_dump( $any_files ); // same: the number of found posts is always 0 ?> 

Когда я делаю var_dump( $any_files ); , запрос не содержит выбранный пост-статус '(что странно):

  ["request"]=> string(237) "SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'attachment' AND ((wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future')) ORDER BY wp_posts.post_date DESC LIMIT 0, 10" 

Поэтому я попробовал это старомодным способом с помощью специального SQL-оператора:

 <?php // Get row by custom SQL-statement $wpdb->get_row( 'SELECT * FROM ' . $wpdb->prefix . 'posts p, ' . $wpdb->prefix . 'postmeta m WHERE p.post_mime_type LIKE "audio/%" AND p.ID = m.post_ID AND m.meta_key = "my_meta_key" AND m.meta_value = "my_meta_value" ORDER BY p.post_date DESC' ); ?> 

И татаааа! Я получаю свой первый аудиофайл.

Я знаю, что есть похожие вопросы:

  • Сломанный? WP_Query и «вложение» в качестве типа сообщения
  • WP_Query не работает как ожидалось для вложений и пользовательских meta_query

Но ни один из них не помог мне, хотя они относились к одной и той же теме.

Что мне здесь не хватает? Почему данный статус не признан? Я хотел бы использовать WP_Query .

Решено: несколько месяцев назад я добавил по умолчанию post_status 'к запросу в pre_get_posts . О чувак! @Milo: Спасибо за ваш намек!