it-swarm.com.de

Datumsabfrage für ein benutzerdefiniertes Metafeld

Ich möchte etwas Ähnliches wie die folgende Datumsabfrage verwenden, möchte jedoch anstelle der vorhandenen Beitragsspalten einige benutzerdefinierte Metafelder verwenden. Zum Beispiel möchte ich anstelle von post_date_gmt den von mir erstellten Metaschlüssel date abfragen.

Mit anderen Worten, ich möchte meinen custom_post_types mithilfe einiger Metafelder filtern können, z. starting_date oder end_date in der Administrationsoberfläche anzeigen. Ich habe bereits den Haupt-WP_Query abgefangen, bin mir aber nicht sicher, wie ich ein Metafeld anstelle einer Beitragsspalte filtern kann.

Kann ich das oder ist es besser, eine Meta-Abfrage zu erstellen?

// Any posts made over a year ago
// but modified in the past month
$some_posts = new WP_Query( array(
    'date_query' => array(
        array(
            'column' => 'post_date_gmt',
            'before' => '1 year ago',
        ),
        array(
            'column' => 'post_modified_gmt',
            'after'  => '1 month ago',
        )
    ),
    'posts_per_page' => -1,
) );
2
glarkou

Sie müssen einen meta_query verwenden, um benutzerdefinierte Felder abzufragen. Wenn Sie Datum und Uhrzeit in benutzerdefinierten Feldern speichern, um sie zu bestellen oder zu vergleichen, müssen Sie sie im Format yyyy-mm-dd h:m:s oder als Unix-Zeitstempel speichern.

Wenn Sie zwei benutzerdefinierte Felder haben, start und end, und Sie Beiträge zwischen einem bestimmten Start- und Enddatum abrufen müssen, können Sie Folgendes versuchen

$args = [
    'meta_query' => [
        [
            'key' => 'start',
            'value' => '2014-05-14'
            'compare' => '>=',
            'type' => 'DATE'
        ],
        [
            'key' => 'end',
            'value' => '2015-05-07',
            'compare' => '<=',
            'type' => 'DATE'
        ],
    ],
];

$q = new WP_Query( $args );

EINIGE ANMERKUNGEN:

  • Für das oben Gesagte ist PHP 5.4+ erforderlich, da die neue Syntax für kurze Arrays verwendet wird

  • Das obige ist völlig ungetestet und könnte fehlerhaft sein. Ich poste von einem mobilen Gerät :-)

  • Lesen Sie die oben angegebenen Links

BEARBEITEN

Aus irgendeinem Grund, den ich nicht kenne, habe ich den letzten Teil Ihres Kommentars verpasst.

Kann ich zusätzlich eine Datumsabfrage in einer Meta-Abfrage haben?

Die Antwort lautet "Nein". Sie können jedoch eine Datums- und eine Meta-Abfrage in derselben Abfrage durchführen

$args = [
    'date_query' => [[ /* Your date related stuff */]],
    'meta_query' => [[ /* Your custom field related stuff */ ]],
];
$q = new WP_Query( $args );
3
Pieter Goosen