Die Standardsortierung für Admin-Spalten mit Meta-Datum blendet Entwurfspfosten mit leerem Datumswert aus

Ich habe einen benutzerdefinierten Post-Typ von “Gigs” und eine Metabox (mit Meta-Box- Plugin) mit Datum und Uhrzeit des Ereignisbeginns gespeichert wie: 2013-11-29 20:30.

Wenn ich einen Entwurf ohne Zeit / Datum speichern möchte, wird er wie erwartet in der Admin-Spalte published oder draft posts angezeigt.

Wenn ich jedoch versuche, den Standardbildschirm so zu gestalten, dass zukünftige Konzerte an der Spitze stehen, dann erscheinen die Gigs ohne Datum noch nicht in der Liste, obwohl es zu den Zählungen von ‘All’ und ‘Draft’ in der Liste hinzugefügt wurde Statuszeilenselektor oben.

Ich verwende Folgendes (basierend auf https://wordpress.stackexchange.com/a/66478/7401 )

/* Sort posts in wp_list_table by column in ascending or descending order. */ function custom_post_order($query){ global $prefix; /* Set post types. _builtin => true returns WordPress default post types. _builtin => false returns custom registered post types. */ $post_types = get_post_types(array('_builtin' => false), 'names'); /* The current post type. */ $post_type = $query->get('post_type'); /* Check post types. */ if(in_array($post_type, $post_types) && $post_type == 'gigs'){ /* Post Column: eg title */ if($query->get('orderby') == ''){ $query->set('orderby', 'meta_value'); } if($query->get('meta_key') == ''){ $query->set('meta_key', $prefix . 'startdatetime'); } } } if(is_admin()){ add_action('pre_get_posts', 'custom_post_order'); } 

Gibt es eine Möglichkeit, das Ereignis ohne Datum / Uhrzeit in die Standard-Admin-Liste aufzunehmen, vorzugsweise ganz oben?

Solutions Collecting From Web of "Die Standardsortierung für Admin-Spalten mit Meta-Datum blendet Entwurfspfosten mit leerem Datumswert aus"

Auch ich hatte damit zu kämpfen (nur ich sortierte nach einem textbasierten Meta-Wert). Hier scheint das Problem behoben zu haben:

 $meta_query = array( 'relation' => 'OR', array( 'key' => 'property_reference', 'value' => false, 'type' => 'BOOLEAN', ), array( 'key' => 'property_reference', 'compare' => 'NOT EXISTS', 'value' => '', //have to set value due to bug: core.trac.wordpress.org/ticket/23268 ), array( 'key' => 'property_reference', ) ); $query->set( 'meta_query', $meta_query ); $query->set( 'meta_key', 'property_reference' ); $query->set( 'orderby', 'meta_value' ); 

… wo property_reference mein benutzerdefiniertes Feld ist.

Wahrscheinlich ist der Metaschlüssel nicht für die Posts eingestellt, für die Datum und Uhrzeit nicht festgelegt sind. Die ‘startdatetime’ Abfrage von Meta-Schlüssel, die Sie versuchen, nur die Posts, für die der Metaschlüssel festgelegt ist, abzurufen, und das ist der Grund, warum Sie diese Posts in dem Ergebnis nicht erhalten.

Ich kenne keine einfache SQL-Abfrage, die tun kann, was Sie wollen. Möglicherweise müssen Sie dafür Personen mit mehr SQL-Expertise konsultieren. Dann können Sie die tatsächliche SQL-Abfrage ändern, die ausgeführt wird.