Einen mysql style-Datumsstempel mit meta_query bestellen

Ich habe ein benutzerdefiniertes Post-Typ-Feld, in dem ich Daten in genanntem football_game_datetime speichere.

Beispielformat und Werte für dieses Feld sind Beispiele wie: “2013-10-31 14:00:00”, “2013-09-16 20:00:00”, “2013-09-30 22:00:00”.

Der Code, den ich benutze, ist der folgende, aber es tut nicht, was ich dachte, es sollte tun:

$mypost = array( 'post_type' => 'football_games', 'meta_query' => array( array( 'order'=>'DESC', 'orderby' => 'meta_value_num', 'meta_key' => 'football_game_datetime' ) ) ); $loop = new WP_Query( $mypost ); 

Solutions Collecting From Web of "Einen mysql style-Datumsstempel mit meta_query bestellen"

'orderby' => 'meta_value_num' wird versuchen, den Wert auf eine Zahl zu setzen, indem man 0 addiert. Mit anderen Worten: "2013-09-30 22:00:00"+0 Als ich getestet habe, dass sowohl PHP als auch MySQL die Zeichenkette konvertiert haben bis 2013 , was du nicht willst.

Dieses bestimmte Datumsformat und nur dieses Datumsformat werden korrekt sortiert, wenn Sie es einfach in Ruhe lassen. Das heißt, es wird nach einem menschlichen Kalender sortiert. Verwenden Sie nicht meta_value_num . Du hast keine Nummer. Du hast eine Zeichenfolge. meta_value einfach meta_value .

Zweitens sind order und orderby innerhalb einer meta_query orderby nicht gültig, die außerhalb der meta_query , und tatsächlich glaube ich nicht, dass Sie die meta_query überhaupt benötigen.

 $mypost = array( 'post_type' => 'football_games', 'order'=>'DESC', 'orderby' => 'meta_value', 'meta_key' => 'football_game_datetime' ); $loop = new WP_Query( $mypost ); 

Was Sie haben, ist im Wesentlichen dieses Beispiel aus dem Codex :

 $query = new WP_Query( array ( 'post_type' => 'product', 'orderby' => 'meta_value', 'meta_key' => 'price' ) );