php - 构建 PHP/WordPress 日历
问题描述
我稍微改编了 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
)
)
);
推荐阅读
- javascript - 优化在对象中查找嵌套属性的功能?
- r - 在 R 中创建新对象
- android - Libgdx - 如何在 lingdx 中使用 android ShareCompact 或 shareActionProvider
- android - .so 文件创建期间的链接器错误。错误:功能未实现
- sql - Accented letters and their base letter is having same ascci value
- reactjs - Add "Row Number" to list component in react-admin Datagrid
- .net - How to print directly without going to print dialog box in vb.net?
- c++ - 为什么我不能使用可选的 UnaryPredicate 参数创建模板函数?
- php - 如何在codeigniter中从前端动态设置index.php之前在url中添加一个文件名?
- javascript - 无法在 django 中加载引导导航栏(可能是明显的解决方案)