我稍微改编了David Walsh(https://davidwalsh.name/php-calendar(的基于PHP的日历。
对于每一天,我希望能够根据日期输出帖子。这适用于日期查询,但不是那么用户友好和未来的帖子,在后台标记"预定"或/?p=1234 URL 时看起来不太好。
如何调整它以使用 ACF 日期选择器字段并与当前日历单元格进行比较以进行输出?
我可以很容易地获取元数据,但这是否可以将元值与循环中的变量进行比较?
然后我可以使用另一个元字段进行排序吗?
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
// FYI day/month/year vars avaliable to use to query
$list_day;
$month;
$year;
// Reset entries
$entries = '';
// Set query arguments
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'event_date',
'meta_query' => array(
'key' => 'event_date',
'value' => date( 'dnY' ),
'compare' => '>=',
'type' => 'DATE'
),
'orderby' => array(
'event_start' => 'DESC'
),
'post_status' => array('publish', 'future')
);
// Run query
$wp_query = new WP_Query($args);
if($wp_query->have_posts()) : while($wp_query->have_posts()) : $wp_query->the_post();
// Collect entries
$entries .= '<a class="calendar-entry" href="'.get_permalink().'">'.get_the_title().'</a>';
endwhile; endif;
// Apply class dependant on entries
if($entries) {
$day_class = 'has-entries';
} else {
$day_class = 'no-entries';
}
// Start calendar cell
$calendar.= '<div class="calendar-day '.$day_class.'"><div class="inner">';
$calendar.= '<div class="day-number">'.$list_day.'</div>';
// If entries, print on calendar cell
if($entries) {
$calendar.= '<div class="entries">'.$entries.'</div>';
}
// End calendar cell
$calendar.= '</div></div>';
endfor;
我猜这样的事情不是通过查询所有帖子实现的最佳方法吗?
if($wp_query->have_posts()) : while($wp_query->have_posts()) : $wp_query->the_post();
// Get event date
$event_date = get_field('event_date');
$event_dates = explode('/',$event_date);
$event_day = $event_dates[0];
$event_month = $event_dates[1];
$event_year = $event_dates[2];
if($event_day == $list_day && $event_month == $month && $event_year == $year) {
$entries .= '<a class="calendar-entry '.$month.'" href="'.get_permalink().'">'.get_the_title().'</a>';
}
endwhile; endif;
显然我的大脑今天早上还没有醒来!
$search_day = $year.$month.$list_day;
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'order' => 'ASC',
'orderby' => 'meta_value_num',
'meta_key' => 'event_start_time',
'meta_query' => array(
array(
'key' => 'event_date',
'value' => $search_day
)
)
);