Ich habe einen query_posts-Aufruf in einer WP-Vorlage. Mit dem Plugin "Weitere Felder" kann ich dem Site-Administrator die Möglichkeit geben, ein Ereignis (benutzerdefinierten Beitragstyp) zu erstellen und anschließend ein Datum einzugeben, das formatiert ist: JJJJ / mm / tt.
Die Hauptfrage ist: Welchen Wert soll ich an die Option value im Array meta_query übergeben? Ich versuche gerade, "date (" Y / m / dh: i A ")" (abzüglich der Anführungszeichen) zu übergeben, da das aktuelle Datum nach meinem Verständnis heute gedruckt wird. Die Uhrzeit ist mir egal, so dass dies irrelevant sein kann. Letztendlich versuche ich, die Vergleichsoption zu verwenden, um bevorstehende Ereignisse und vergangene Ereignisse an verschiedenen Orten auf dieser Site anzuzeigen. An einer anderen Stelle muss ich der Option value ein Array übergeben, das den ersten und den letzten Tag des aktuellen Monats ausgibt und die Ausgabe auf Ereignisse beschränkt, die in diesem Monat stattfinden.
<?php
query_posts( array(
'post_type' => 'event', // only query events
'meta_key' => 'event_date', // load up the event_date meta
'orderby' => 'meta_value', // sort by the event_date
'order' => 'asc', // ascending, so earlier events first
'posts_per_page' => '2',
'meta_query' => array( // restrict posts based on meta values
'key' => 'event_date', // which meta to query
'value' => date("Y/m/d h:i A"), // value for comparison
'compare' => '>=', // method of comparison
'type' => 'DATE' // datatype, we don't want to compare the string values
) // end meta_query array
) // end array
); // close query_posts call
?>
'type' => 'DATE'
?date_i18n()
anstelle des nativen PHP verwendendate()
.Dies hängt hauptsächlich davon ab, wie Ihr Datum zuerst im Meta-Wert gespeichert wird. Im Allgemeinen ist es eine gute Idee, Daten in MySQL als MySQL-Datums- / Zeitstempel zu speichern.
MySQL-Zeitstempel haben das Format
Y-m-d h:i:s
.Es ist jedoch immer eine gute Idee, die WP-eigenen Date Mangling-Funktionen zu verwenden. Verwenden Sie daher, um das aktuelle Datum im MySQL-Format abzurufen
current_time('mysql')
.Verwenden Sie zum Formatieren eines MySQL-Datums für die Anzeige
mysql2date($format, $mysql_date)
. In diesem Fall ist es am besten, das Datum so anzuzeigen, wie es in den Einstellungen konfiguriert wurde$format = get_option('date_format');
.Um ein vom Benutzer ausgewähltes Datum zu speichern, müssen Sie es in ein MySQL-Datum umcodieren. Dies ist am einfachsten, aber nicht am sichersten
date('Y-m-d h:i:s', $unix_timestamp);
.$unix_timestamp
kann oft über abgeleitet werdenstrtotime($user_input)
.Allerdings
strtotime()
macht keine Plausibilitätsprüfungen auf es selbst ist, so ist es am besten Ihre eigene converstion Funktion zu schreiben.Zum Abrufen des Monatsbereichs verwende ich die folgende Funktion, um die Monatsgrenzen für jeden MySQL-Zeitstempel abzurufen:
Wenn Sie die Wochengrenzen erhalten möchten, enthält WP bereits eine Funktion für
get_weekstartend($time);
das:, die die Grenzen auch als Array liefert.Sie können diese dann in Ihrem
meta_query
Argument verwenden, indem Sie zwei separate Vergleiche durchführen.quelle
Y-m-d G:i:s
"?G:i:s
ist 24 Stunden,h:i:s
ist 12 Stunden.Ich bin mit folgendem Schluss gekommen. Ich richte ein Event-Momth-Feld ein und vergleiche von dort aus. Danke für die Hilfe
quelle
Hallo, unten poste ich meine Lösung. Wo ich Datum im
Y-m-d H:i
Format gespeichert habe (wie 2013-07-31 16:45).Ereignisse, die nach Heute enden, werden nur von abgefragt
meta_query
.date_default_timezone_set('Asia/Calcutta');
Ich habe die Standardzeitzone für die
date()
Funktion eingestellt.quelle