web-dev-qa-db-fra.com

Requête de date pour un champ méta personnalisé

J'aimerais utiliser quelque chose de similaire à la date_query suivante, mais j'aimerais utiliser des méta-champs personnalisés à la place des colonnes de publication existantes. Par exemple, au lieu de post_date_gmt, j'aimerais interroger la clé méta date que j'ai créée.

En d'autres termes, j'aimerais pouvoir filtrer mon custom_post_types en utilisant certains champs méta, par exemple. starting_date ou end_date à afficher dans l'interface d'administration. J'ai déjà intercepté le WP_Query principal, mais je ne sais pas comment filtrer un méta-champ au lieu d'une colonne de publication.

Puis-je le faire ou est-il préférable de créer une méta-requête?

// 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

Vous devez utiliser un meta_query pour interroger des champs personnalisés. Si vous souhaitez stocker la date et l'heure dans des champs personnalisés à des fins de commande ou de comparaison, vous devez le stocker au format yyyy-mm-dd h:m:s ou sous la forme d'un unix timestamp .

Si vous avez deux champs personnalisés start et end et que vous devez obtenir des publications entre une date de début et une date de fin, vous pouvez essayer les solutions suivantes:

$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 );

QUELQUES NOTES:

  • Ce qui précède nécessite PHP 5.4+, car il utilise la nouvelle syntaxe de tableau abrégé.

  • Ce qui précède est totalement non testé et pourrait être buggy. Je poste sur un appareil mobile :-)

  • Lire les liens que j'ai fournis ci-dessus

MODIFIER

Pour une drôle de raison inconnue, j'ai raté la dernière partie de votre commentaire.

De plus, puis-je avoir une date_query dans une méta-requête

La réponse est non, mais vous pouvez avoir une date et une méta requête dans la même requête, comme ceci

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