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

 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

 

吴川斌

吴川斌

Leave a Reply