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