Ich möchte die erste Audiodatei in der Medienbibliothek nach einem benutzerdefinierten Feld filtern, aber es gibt immer einen leeren Satz von Posts zurück. Ich weiß, dass ich 'post_status' => 'inherit'
und 'post_type' => 'attachment'
, aber es ändert nichts.
'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 ?>
Also versuchte ich es zu minimieren, indem ich alle Meta-Schlüssel-Sachen wegließ und nach einem Anhang suchte (wie hier erwähnt)
'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 ?>
Wenn ich var_dump( $any_files );
, die Anfrage enthält nicht den ausgewählten Post-Status ‘(was seltsam ist):
["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"
Also habe ich es altmodisch mit einer benutzerdefinierten SQL-statement versucht:
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' ); ?>
Und Tataaaa! Ich bekomme meine erste Audiodatei.
Ich weiß, dass es ähnliche Fragen gibt:
Aber keiner von ihnen half mir, obwohl sie das gleiche Thema behandelten.
Was ich hier vermisse? Warum wird der angegebene Status nicht erkannt? Ich möchte WP_Query
.
Getriggers: Vor einigen Monaten habe ich der Abfrage im Action-Hook pre_get_posts
einen default post_status hinzugefügt. Oh Mann! @Milo: Danke für deinen Hinweis!