从缓存中排除短代码内容-WordPress

我做了一个简短代码, 返回了首页上的新闻。我必须显示实际日期的相关新闻。如果新闻较旧, 它将显示下一个新闻。问题在于页面被缓存, 我的新闻短代码内容也被缓存, 用户看到了过时的新闻。
我的代码在footer.php中, 并用我需要的所有信息创建一个div, 然后使用一个js小脚本, 在我的主页中使用它的内容。
有没有办法只从缓存中排除此功能/简码?
【从缓存中排除短代码内容-WordPress】这是我在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> '; ?>

#1你可以使用Ajax在高速缓存的页面上加载这类动态块。 Ajax示例(请确保也使用_nopriv添加该功能, 以便未登录的用户可以看到该块)。
$( document ).ready(function() { loadNews(); }); function loadNews() { $.ajax({ url: ajaxurl, // or example_ajax_obj.ajaxurl if using on frontend data: { 'action': 'load_news', }, success:function(data) { // output the response into the newsblock $("#newsblock").html(data); }, error: function(errorThrown){ console.log(errorThrown); } }); }

你的ajax函数基本上可以包含复制/粘贴当前代码以输出新闻。当用户在页面上时, 你甚至可以使用间隔来每分钟左右更新一次块:setInterval

    推荐阅读