将复选框字段与循环中的当前日期进行比较
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();
}
?>
我将我的复选框自定义字段 (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();
}
?>