web-dev-qa-db-fra.com

Comment interroger l'année sur une date complète dans un champ personnalisé?

Mes publications ont un champ personnalisé nommé production _ date et formaté AAAAMMJJ.

Comment créer une méta_query pour ne sélectionner que la partie AAAA?

$meta_query_args = array(
    array(
        'key'     => 'production_date',
        'value'   => '2004',
        'compare' => '???'
    )
);
1
mike23

La manière pratique dont ACF stocke les dates en tant que YYYYMMDD est que vous pouvez les traiter comme des entiers et obtenir un niveau de fonctionnalité similaire à celui utilisé avec des dates "vraies".

Par exemple, pour obtenir toutes les dates après le 1er janvier 2011, utilisez > 20110101. Ceux avant le 1er juin 2012? < 20120601. Et pour votre cas, toutes les dates en 2004? >= 20040101 && <= 20041231.

Traduit en une méta requête:

$year = '2004';

$meta_query_args = array(
    array(
        'key'     => 'production_date',
        'value'   => array( $year . '0101', $year . '1231' ),
        'compare' => 'BETWEEN',
        'type'    => 'NUMERIC',
    )
);

Consultez le codex pour une explication complète de tous les arguments.

4
TheDeadMedic

Vous pouvez utiliser les fonctions PHP date et strtotime pour obtenir une année:

$date_value = '20040619'; // from your production_date custom field

$year = date( 'Y', strtotime( $date_value ) );

$meta_query_args = array(
    array(
        'key'     => 'production_date',
        'value'   => $year,
        'compare' => '???'
    )
);
0
phatskat