WordPress在登录之后重新刷新浏览器缓存

本来在WordPress里设置了浏览器页面缓存以加快页面的加载体验,但网站内有部分的内容是需要用户登录之后才有权限访问的,但由于浏览器缓存了页面,带来的问题是即使用户登陆了,访问的还是浏览器缓存的未登录之前的页面内容,会造成访问上的困扰。
一个优雅的解决方式是使用AJAX加载需要登录的内容,但实现起来巨麻烦,所以采用了基于前端JavaScript刷新页面的方案。
将以下JavaScript代码添加到您的主题的footer.php文件中:
<?php if (is_user_logged_in()) : ?> <script> document.addEventListener('DOMContentLoaded', function() { if (document.body.classList.contains('logged-in')) { // 为所有内部链接添加时间戳参数 var links = document.querySelectorAll('a[href^="<?php echo home_url(); ?>"]'); var timestamp = new Date().getTime(); links.forEach(function(link) { var url = new URL(link.href); // 排除后台链接 if (!url.pathname.includes('/wp-admin/') && !url.pathname.includes('/wp-login.php')) { url.searchParams.set('ver', timestamp); link.href = url.toString(); } }); } }); </script> <?php endif; ?>
WordPress中的footer.php文件位于您当前激活的主题目录下。具体路径是:
wp-content/themes/您的主题名称/footer.php