Я сделал шорткод, который возвращает новости на главной странице.Я должен показать соответствующие новости для фактической даты.Если новость старше, то она покажет следующую.Проблема в том, что страница кэшируется, и мои новости также имеют шорткод, и пользователи видят устаревшие новости.
Мой код находится в footer.php
и создается div
со всей необходимой мне информацией, затемс помощью сценария litte js я использую его содержимое на своей домашней странице.
Есть способ исключить только эту функцию / шорткод из кэша?
Это мой код в functions.php
global $news;
$today = date('d-m-Y');
$args = array (
'posts_per_page' => 100,
'post_type' => 'news'
);
$query = new WP_Query($args);
$ids = array();
$dates = array();
if($query->have_posts()){
while ($query->have_posts()) : $query->the_post();
array_push($dates,get_field('end_date'));
array_push($ids,get_the_ID());
endwhile;
}
function getClosestEventID($date, array $dates, $last, $ids) {
$interval = array();
$now = strtotime(date('Y-m-d'));
foreach ($dates as $d) {
// strtotime often has problems with d/m/y so we use d-m-y
$d = str_replace("/", "-", $d);
$dateTime = strtotime($date);
$toTime = strtotime($d);
if (strtotime($d) < $now) { continue 1; }
if ($toTime < $dateTime) { continue 1; }
$interval[$d] = abs($dateTime - $toTime);
}
if (!count($interval)) {
return $last;
}
asort($interval);
$closest = key($interval);
$id_key = array_search(str_replace("-", "/", $closest), $dates);
return $ids[$id_key];
}
$nearestEventID = getClosestEventID($today, $dates, end($ids), $ids);
echo '<div class="last-event" style="display: none;">'
. '<span class="event-title">' . get_the_title($nearestEventID) . '</span>'
. '<span class="event-content">' . get_the_content($nearestEventID) . '</span>'
. '<span class="event-place">' . get_field('ort', $nearestEventID) . '</span>'
. '<span class="event-start-date">' . get_field('start_date', $nearestEventID) . '</span>'
. '<span class="event-end-date">' . get_field('end_date', $nearestEventID) . '</span>'
. '<span class="event-discipline">' . get_field('discipline', $nearestEventID) . '</span>'
. '</div>';
?>