元查询 Select ACF 未返回当前日期的 Post
Meta Query Select ACF Not Returning Post For Current Date
我正在尝试根据 ACF Select(多个)一周中的几天(周一至周日)将 post 类型转换为 return。我使用 ACF Select 键 (show_days) 和当前日期的关系设置了一个元查询。 var_dump 显示两个数组正在相互比较,但仍未显示显示(post 类型)。
<?php
$date = date('l');
$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' => 'show_days',
'value' => array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'),
'compare' => 'IN',
),
array (
'key' => 'date',
'value' => $date,
'compare' => '=',
'type' => 'DATE',
),
)));
if ( $query->have_posts() ) { while( $query->have_posts() ) {
$query->the_post();
echo '<div class="onAir"><h3>Currently On Air: ';
the_title();
if (get_field('dj', $query->ID)) {
$dj = get_field('dj');
echo ' w/ ';
echo $dj;
}
echo '</h3></div>';
} wp_reset_postdata();
}
?>
不知道是不是数据库元值不对应。我什至尝试过反序列化()数组,但它仍然 returns 相同的数组值。任何帮助,将不胜感激。谢谢!
好的,我明白了。此查询与时间查询结合使用,因此我将整个代码放在一起。它正在将当前时间与两个自定义字段(时间范围)进行比较,以及哪些日期被选中(复选框)。因此,如果是星期二下午 4 点,它只会显示时间范围为下午 4 点,并且如果星期二被选中。此外,它还有一个关系字段,我可以在其中将节目分配给某些广播电台。所以在广播电台 post 类型页面上,广播功能将根据一天中的时间显示!
<?php
$time = current_time('H:i:s');
$date = strftime("%u", 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',
'orderby' => 'meta_value',
'meta_key' => 'show_days',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'start_time',
'value' => $time,
'compare' => '<=',
'type' => 'TIME',
),
array(
'value' => $time,
'key' => 'end_time',
'compare' => '>=',
'type' => 'TIME',
),
))
);
$days = the_field('show_days');
if ($query->have_posts() && $days = $date ) { 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();
}
?>
我正在尝试根据 ACF Select(多个)一周中的几天(周一至周日)将 post 类型转换为 return。我使用 ACF Select 键 (show_days) 和当前日期的关系设置了一个元查询。 var_dump 显示两个数组正在相互比较,但仍未显示显示(post 类型)。
<?php
$date = date('l');
$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' => 'show_days',
'value' => array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'),
'compare' => 'IN',
),
array (
'key' => 'date',
'value' => $date,
'compare' => '=',
'type' => 'DATE',
),
)));
if ( $query->have_posts() ) { while( $query->have_posts() ) {
$query->the_post();
echo '<div class="onAir"><h3>Currently On Air: ';
the_title();
if (get_field('dj', $query->ID)) {
$dj = get_field('dj');
echo ' w/ ';
echo $dj;
}
echo '</h3></div>';
} wp_reset_postdata();
}
?>
不知道是不是数据库元值不对应。我什至尝试过反序列化()数组,但它仍然 returns 相同的数组值。任何帮助,将不胜感激。谢谢!
好的,我明白了。此查询与时间查询结合使用,因此我将整个代码放在一起。它正在将当前时间与两个自定义字段(时间范围)进行比较,以及哪些日期被选中(复选框)。因此,如果是星期二下午 4 点,它只会显示时间范围为下午 4 点,并且如果星期二被选中。此外,它还有一个关系字段,我可以在其中将节目分配给某些广播电台。所以在广播电台 post 类型页面上,广播功能将根据一天中的时间显示!
<?php
$time = current_time('H:i:s');
$date = strftime("%u", 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',
'orderby' => 'meta_value',
'meta_key' => 'show_days',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'start_time',
'value' => $time,
'compare' => '<=',
'type' => 'TIME',
),
array(
'value' => $time,
'key' => 'end_time',
'compare' => '>=',
'type' => 'TIME',
),
))
);
$days = the_field('show_days');
if ($query->have_posts() && $days = $date ) { 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();
}
?>