web-dev-qa-db-ja.com

カスタムフィールドの完全な日付の年の部分を問い合わせるにはどうすればよいですか。

私の投稿にはproduction_ dateという名前のカスタムフィールドがあり、フォーマットはYYYYMMDDです。

YYYY部分だけを選択するようにmeta_queryを作成するにはどうすればよいですか?

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

ACFが日付をYYYYMMDDとしてどのように格納するかについての便利なことは、あなたがそれらを整数のように扱うことができて、まるであなたが「本当の」日付を使っているかのようなレベルの機能を得ることができます。

たとえば、2011年1月1日以降のすべての日付を取得するには、> 20110101を使用します。 2012年6月1日より前のもの< 20120601。あなたの場合は、2004年内のすべての日付? >= 20040101 && <= 20041231

メタクエリに変換されます。

$year = '2004';

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

すべての引数の詳細な説明については、コーデックス をチェックしてください。

4
TheDeadMedic

PHPの date および strtotime 関数を使って年を取得することができます。

$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