将复选框字段与循环中的当前日期进行比较

Comparing Checkbox Field to Current Date within Loop

我将我的复选框自定义字段 (show_days) 作为值 (1-7) 来表示 (Moo-Sun),我用回声对其进行了测试,它返回了正确的值。例如,今天是星期二,回声显示 2。

我正在尝试将它与当前日期进行比较 strftime("%u", time()); 以仅显示标记了当前日期的帖子。它不起作用,我想知道是否需要在某处添加 in_array。感谢您的帮助。

<?php
$days = get_field('show_days');
$date = strftime("%u", time());
if ($query->have_posts() && $days = $date )  { while( $query->have_posts() ) {
        $query->the_post();

        echo '<div class="onAir"><h3>Currently On Air: ';
        the_title();
           echo $days. '</h3></div>';

  } wp_reset_postdata();
}
?>

您需要将比较($days = $date)作为 meta_query 添加到 WP_Query 参数。

<?php
$datetime = date('Y-m-d');
$day_number = date('w', strtotime($datetime));
$args = array(
    'post_type'    => 'your_post_type',
    'meta_key'     => 'show_days',
    'meta_value'   => $day_number,
    'meta_compare' => '=',
);
$query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ) : ?>

    <!-- the loop -->
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <div class="onAir">
            <h3>Currently On Air: <?php the_title(); ?> <?php echo $day_number; ?></h3>
        </div>
    <?php endwhile; ?>
    <!-- end of the loop -->

    <?php wp_reset_postdata(); ?>

<?php endif; ?>

好吧...经过很多不同的比较和拔出我的头发,我把它整理好了。将两个自定义字段时间范围与当前时间进行比较,然后将选定的星期几与当前日期进行比较,然后 WP 查询帖子,最重要的是……我的 Wordpress 时间戳提前了 6 小时。啊!哈哈,这段代码做到了

 <?php
      $time = current_time('H:i:s');
      date_default_timezone_set('America/Denver');
      $date = strftime("%A", time());
      $shows = get_field('station_shows', false, false);
      $query = new WP_Query ( array(
        'post_type'       => 'shows',
        'posts_per_page'  => 1,
        'post__in'        => $shows,
        'post_status'     => 'publish',
        'meta_query' => array(
            'relation' => 'AND',
        array(
                  'key'       => 'start_time',
                  'value'     => $time,
                  'compare'   => '<=',
                  'type'      => 'TIME',
            ),
        array(
                  'value'     => $time,
                  'key'       => 'end_time',
                  'compare'   => '>=',
                  'type'      => 'TIME',
            ),
            'relation'  => 'AND',
        array(
                  'key'       => 'show_days',
                  'value'     => $date,
                  'compare'   => 'LIKE',

        )
            )));

      if ($query->have_posts() )  { while( $query->have_posts() ) {

        $query->the_post();

        echo '<div class="onAir"><h3>Currently <span>On Air</span> : ';
        the_title();

           echo '</h3></div>';
         }
  wp_reset_postdata();
}
?>