Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/35.211.77.66) is not within the allowed path(s): (/www/wwwroot/35.211.77.66/blog.tkzyz.com/:/tmp/) in /www/wwwroot/35.211.77.66/blog.tkzyz.com/wp-content/plugins/qqworld-collector/qqworld-collector.php on line 14

Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/35.211.77.66) is not within the allowed path(s): (/www/wwwroot/35.211.77.66/blog.tkzyz.com/:/tmp/) in /www/wwwroot/35.211.77.66/blog.tkzyz.com/wp-content/plugins/qqworld-collector/qqworld-collector.php on line 14

Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/35.211.77.66) is not within the allowed path(s): (/www/wwwroot/35.211.77.66/blog.tkzyz.com/:/tmp/) in /www/wwwroot/35.211.77.66/blog.tkzyz.com/wp-content/plugins/qqworld-collector/qqworld-collector.php on line 14
调整白天夜间自动切换的时间 - 测试

调整白天夜间自动切换的时间

原因

现在是夏天了,我想把博客的白天夜间自动切换的时间,从19:00-06:00调整为22:00-05:00

发现将php代码里的时间调整后,导致博客的文字在19:00-22:00这段时间文章的标题是淡白色文字

// 1. PHP 端:根据 Cookie 或服务器时间自动给 <body> 添加 night 类(无痕浏览器完美适配)
function child_add_night_body_class($classes) {
    // 优先检查 Cookie(手动切换优先)
    if (isset($_COOKIE['night']) && $_COOKIE['night'] === '1') {
        $classes[] = 'night';
    } else if (isset($_COOKIE['night']) && $_COOKIE['night'] === '0') {
        // Cookie 为 0 表示强制日间,不做任何事
    } else {
        // 没有 Cookie 时,用服务器时间判断(22:00-05:00)
        $hour = current_time('H'); // 获取 WordPress 时区的当前小时(0-23)
        if ($hour >= 22 || $hour < 5) {
            $classes[] = 'night';
        }
    }
    return $classes;
}
add_filter('body_class', 'child_add_night_body_class');

查了下发现忘记修改了防闪烁部分的js代码时间

// ===== 优化版防闪烁脚本:操作 <html> 类 + 刷新保持深色(时间改为22:00-05:00) =====
    (function() {
        var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1");
        if (night === '1' || (night === '' && (new Date().getHours() >= 22 || new Date().getHours() < 5))) {
            document.documentElement.classList.add('night');
            // 双重保险:直接修改样式
            document.documentElement.style.backgroundColor = '#1a1a1a';
        }
    })();
    </script>
    <?php
}
add_action('wp_head', 'night_mode_head_inline', 1);

将上面两个代码修改后即可完成时间的切换

修复问题

另外,一直有一个问题,就是如果切换为夜间模式时,点击刷新网页,再切换白天,此时发现文字依然是夜间状态,不会自动变色,这次也一并修复了

原有问题的代码

        // 全局切换函数(只操作 body 上的 night 类)
        // max-age=3600为Cookie1小时过期。有效期内遵循用户手动设置,过期后根据服务器时间自动切换。
        window.nightModeToggle = function() {
            if (body.classList.contains('night')) {
                body.classList.remove('night');
                btn.innerHTML = '☀️';
                document.cookie = 'night=0;path=/;max-age=3600';
            } else {
                body.classList.add('night');
                btn.innerHTML = '🌙';
                document.cookie = 'night=1;path=/;max-age=3600';
            }
        };

        // 事件委托,确保按钮在任何时候都能点击
        document.addEventListener('click', function(e) {
            if (e.target.closest('#nightModeToggle')) {
                nightModeToggle();
            }
        });

        // 初始化图标(根据 body 是否已有 night 类)
        if (body.classList.contains('night')) {
            btn.innerHTML = '🌙';
        }
    })();
    </script>
    <?php
}
add_action('wp_footer', 'night_mode_footer', 99);

修复后的代码

        // 全局切换函数(同时操作 body 和 html) 
        // max-age=3600为Cookie1小时过期。有效期内遵循用户手动设置,过期后根据服务器时间自动切换。
        window.nightModeToggle = function() {
            var html = document.documentElement;
            if (body.classList.contains('night')) {
                body.classList.remove('night');
                html.classList.remove('night');
                btn.innerHTML = '☀️';
                document.cookie = 'night=0;path=/;max-age=3600';
            } else {
                body.classList.add('night');
                html.classList.add('night');
                btn.innerHTML = '🌙';
                document.cookie = 'night=1;path=/;max-age=3600';
            }
        };

        // 事件委托,确保按钮在任何时候都能点击
        document.addEventListener('click', function(e) {
            if (e.target.closest('#nightModeToggle')) {
                nightModeToggle();
            }
        });

        // 初始化图标(根据 body 是否已有 night 类)
        if (body.classList.contains('night')) {
            btn.innerHTML = '🌙';
        }
    })();
    </script>
    <?php
}
add_action('wp_footer', 'night_mode_footer', 99);

 

给TA打赏
共{{data.count}}人
人已打赏
笔记

2026年7月24日中午收到短信和邮件提示我的vps存在恶意文件

2026-7-24 23:35:24

笔记

宝塔面板版本互相切换测试与验证

2026-8-13 1:02:52