Ich kann nicht scheinen, dass Entwürfe mit WP_Query angezeigt werden, selbst wenn post_status auf “any” oder “draft” gesetzt ist.
$args = array( 'p' => 1234, 'post_type' => 'any', 'post_status' => 'any' ); $query = new WP_Query( $args ); while ( $query->have_posts() ) : $query->the_post(); // display the post endwhile; wp_reset_postdata();
Wenn ich zurück gehe und Post 1234 publiziere, greift WP_Query ganz gut. Aber wenn es ein Entwurf ist, schnappt sich weder ein Entwurf noch ein draft
.
Ich habe gelesen, dass der exclude_from_search
Parameter in register_post_type()
verhindert, dass Beiträge mit WP_Query angezeigt werden, also setze ich ihn in dem post_type, von dem ich greife, auf false:
$args = array( 'labels' => $labels, 'description' => '', 'public' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'show_ui' => true, 'menu_position' => 60, 'menu_icon' => null, 'capability_type' => post, 'hierarchical' => false, 'supports' => array('title', 'editor', 'author', 'excerpt', 'trackbacks', 'custom-fields', 'revisions'), 'rewrite' => true, 'query_var' => true, 'can_export' => true, 'show_in_nav_menus' => true, ); register_post_type('chart', $args);
Gibt es etwas, das ich hier übersehen habe? Ich sehe nicht, warum ein Entwurfsposten in diesem Posttyp in der obigen Abfrage nicht angezeigt wird.
Übergeben Sie es als Array.
Beispielsweise
$args = array( 'p' => 1234, 'post_type' => 'any', 'post_status' => array('draft') );
Oder für alle Arten
$args = array( 'p' => 1234, 'post_type' => 'any', 'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash') );
Ich bin gerade auf dieses genaue Szenario gestoßen. Meiner Meinung nach sollte es funktionieren, aber wenn ich eine Kombination von 'p' => 123
und 'post_status' => 'any'
, würde es die Post nicht zurückgeben, wenn der Poststatus Entwurf ist.
Ich konnte 'post__in' => array( 123 )
indem 'post__in' => array( 123 )
benutzte. Damit:
$args = array( 'post__in' => array( 123 ), 'post_type' => 'any', 'post_status' => 'any', ); $query = new WP_Query( $args ); // ... etc.
Es sieht so aus, als ob Sie einen seltsamen Fehler haben könnten. Versuchen Sie, die folgende WP_Query
zu ersetzen:
$query = new WP_Query(); $posts = $query->query( $args );