Я немного адаптировал календарь на основе PHP от Дэвида Уолша (https://davidwalsh.name/php-calendar).
). Для каждого дня я хочу иметь возможность выводить посты на основе даты. Это хорошо работает с запросом даты,но не такие удобные для пользователя и будущие сообщения, не выглядите так хорошо, если в бэк-офисе помечены «Запланировано» или URL-адрес /? p = 1234.
Как это можно адаптировать для использования 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;