【Wordpress】カスタムフィールドでソート・日付範囲指定

日付でソートしてその年以降の記事のみ表示

ユーザが設定したカスタムフィールド「schedule_date」でソートして、
現在の年より過去の記事は表示させないようにする。
「schedule_date」は Ymd の8桁の文字列。
ソートには
'orderby' => 'meta_value'
'order' => 'ASC/DESC',
'meta_key' => 'ソート対象のフィールド名',
で指定する。
条件判定は meta_query を使う。
<?php
$posttype = 'schedule';

$args = array(
  'posts_per_page' => -1,
  'post_type' => $posttype,
  'post_status' => 'publish',
  'orderby' => 'meta_value',
  'order' => 'ASC',
  'meta_key' => 'schedule_date',
  'meta_query' => array('key' => 'schedule_date',
    'value' => date('Y').'0101',
    'compare' => '>=',
    'type' => 'DATE'
  ),
);

$the_query = new WP_Query($args);

日付でソートしてその年の記事のみ表示

範囲指定の条件が2個以上の場合は relation を使う。
<?php
$posttype = 'schedule';

$args = array(
  'posts_per_page' => -1,
  'post_type' => $posttype,
  'post_status' => 'publish',
  'orderby' => 'meta_value',
  'order' => 'ASC',
  'meta_key' => 'schedule_date',
  'meta_query' => array(
    'relation' => 'AND',
    array(
      'key' => 'schedule_date',
      'value' => date('Y').'0101',
      'compare' => '>=',
      'type' => 'DATE'
    ),
    array(
      'key' => 'schedule_date',
      'value' => date('Y').'1231',
      'compare' => '<=',
      'type' => 'DATE'
    )
  )
);

$the_query = new WP_Query($args);