编辑自己的博客少不了要改版维护,在这期间可能会出现各种的404错误,页面版式错误等等,用户体验非常不好。在这种情况下,暂时设立一个站点维护页面不失为一个非常好的方法。设立一个这样的页面既可以暂停普通用户浏览,降低站点访问压力,又提高了维护期间的工作效率。
得益于wordpress5.3修改了wp_die()的标签,将原p标签改为div标签,大大的提高了可编辑性
直接上代码:
样式一
function begin_wp_maintenance_mode(){ if(!current_user_can('edit_themes') || !is_user_logged_in()){ $logo = zm_get_option('logo');//logo链接 $blogname = get_bloginfo('name'); $blogdescription = get_bloginfo('description'); wp_die("<div style='text-align:center;color:#fff;'> <style> *{margin:0;padding:0;} html,body{max-width:100%;width:100%;height:100%;background-color: #000;overflow: hidden;} #error-page{margin:0 auto!important;padding:0;} #clock2{margin: 5% auto;width: 300px;height: 300px;border-radius: 10px;background: #aaa;position: relative;transform: rotate(-90deg);} #clock2 .bg{width: 260px;height: 260px;border-radius: 50%;background: #fff;position: absolute;left: 50%;top: 50%;margin-left: -130px;margin-top: -130px;} #clock2 .point{position: absolute;left: 50%;top: 50%;margin-left: -14px;margin-top: -14px;} #clock2 #hour{width: 65px;height: 12px;background: #000;margin: 10px 0 0 14px;transform-origin:0 8px;border-radius: 12px;} #clock2 #minute{width: 85px;height: 8px;background: #000;margin: -16px 0 0 14px;transform-origin:0 6px;border-radius: 8px;} #clock2 #second{width: 95px;height: 4px;background: #f00;margin: 0 0 0 14px;transform-origin:0 3px;border-radius: 4px;} #clock2 .point .circle{width: 28px;height: 28px;border-radius: 50%;background: #000;position: absolute;left: 0;top: 0;} @keyframes hour {from {transform: rotate(0deg);}to {transform: rotate(360deg);}} #clock2 .number{position: absolute;font-size: 34px;width: 50px;height: 50px;line-height: 50px;text-align: center;transform: rotate(90deg);} </style> <img src='".$logo."' alt='".$blogname."' /><br><br>".$blogname."正在例行维护中,请稍候... <div id='clock2'> <div class='bg'> <div class='point'> <div id='hour'></div> <div id='minute'></div> <div id='second'></div> <div class='circle'></div> </div> </div> </div> </div> <script> var hour = document.getElementById('hour'); var minute = document.getElementById('minute'); var second = document.getElementById('second'); var myClock = document.getElementById('clock2'); function clock(){ var date = new Date(); var hourDeg = date.getHours()*360/12; var minuteDeg = date.getMinutes()*360/60; var secondDeg = date.getSeconds()*360/60; hour.style.transform = 'rotate('+hourDeg+'deg)'; minute.style.transform = 'rotate('+minuteDeg+'deg)'; second.style.transform = 'rotate('+secondDeg+'deg)'; }clock(); setInterval(clock,1000); var pointX = 150; var pointY = 150; var r = 114; function drawNumber(){ var deg = Math.PI*2/12; for (var i = 1;i <= 12;i++) { var angle = deg*i; var x = pointX + r*Math.cos(angle); var y = pointY + r*Math.sin(angle); var number = document.createElement('div'); number.className = 'number'; number.innerHTML = i; number.style.left = x - 25 + 'px'; number.style.top = y - 25 + 'px'; myClock.appendChild(number); } }drawNumber(); </script>", '站点维护中 - '.$blogname.' - '.$blogdescription ,array('response' => '503')); } } add_action('get_header', 'begin_wp_maintenance_mode');
样式二
代码:
function begin_wp_maintenance_mode(){ if(!current_user_can('edit_themes') || !is_user_logged_in()){ $logo = zm_get_option('logo'); $blogname = get_bloginfo('name'); $blogdescription = get_bloginfo('description'); wp_die("<style> *{margin:0;padding:0;} html,body{max-width:100%;width:100%;height:100%;background-color: #000;overflow: hidden;} #error-page{margin:0 auto!important;padding:0;} .clock{text-align:center;position: absolute;top: calc(50% - 15px);left: calc(50% - 55px);} .clock img{width:110px} .clocktext{color: #fff;writing-mode: tb-rl;position: absolute;left: 40px;top: calc(50% - 170px);font-size: 20px;} .label{position: absolute;top: 50%;left: 50%;display:inline-block;color:#4d4d4d;text-align: center;padding:0 5px;font-size:19px;transition:all 1s;transform: translate(-50%,-50%);transform-origin: 0% 0%;} .now{color: #fff;} </style> <div id='clock'></div><div class='clock'><img src='".$logo."' alt='".$blogname."' /></div><div class='clocktext'>".$blogname." 正在例行维护,请稍候...</div> <script> var yearText = [''] var monthText = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']; var dayText = ['一号', '二号', '三号', '四号', '五号', '六号', '七号', '八号', '九号', '十号', '十一号', '十二号', '十三号', '十四号', '十五号', '十六号', '十七号', '十八号', '十九号', '二十号', '二十一号', '二十二号', '二十三号', '二十四号', '二十五号', '二十六号', '二十七号', '二十八号', '二十九号', '三十号', '三十一号']; var weekText = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']; var hourText = ['零点', '一点', '两点', '三点', '四点', '五点', '六点', '七点', '八点', '九点', '十点', '十一点', '十二点', '十三点', '十四点', '十五点', '十六点', '十七点', '十八点', '十九点', '二十点', '二十一点', '二十二点', '二十三点']; var minuteText = ['零分', '一分', '二分', '三分', '四分', '五分', '六分', '七分', '八分', '九分', '十分', '十一分', '十二分', '十三分', '十四分', '十五分', '十六分', '十七分', '十八分', '十九分', '二十分', '二十一分', '二十二分', '二十三分', '二十四分', '二十五分', '二十六分', '二十七分', '二十八分', '二十九分', '三十分', '三十一分', '三十二分', '三十三分', '三十四分', '三十五分', '三十六分', '三十七分', '三十八分', '三十九分', '四十分', '四十一分', '四十二分', '四十三分', '四十四分', '四十五分', '四十六分', '四十七分', '四十八分', '四十九分', '五十分', '五十一分', '五十二分', '五十三分', '五十四分', '五十五分', '五十六分', '五十七分', '五十八分', '五十九分']; var secondsText = ['一秒', '二秒', '三秒', '四秒', '五秒', '六秒', '七秒', '八秒', '九秒', '十秒', '十一秒', '十二秒', '十三秒', '十四秒', '十五秒', '十六秒', '十七秒', '十八秒', '十九秒', '二十秒', '二十一秒', '二十二秒', '二十三秒', '二十四秒', '二十五秒', '二十六秒', '二十七秒', '二十八秒', '二十九秒', '三十秒', '三十一秒', '三十二秒', '三十三秒', '三十四秒', '三十五秒', '三十六秒', '三十七秒', '三十八秒', '三十九秒', '四十秒', '四十一秒', '四十二秒', '四十三秒', '四十四秒', '四十五秒', '四十六秒', '四十七秒', '四十八秒', '四十九秒', '五十秒', '五十一秒', '五十二秒', '五十三秒', '五十四秒', '五十五秒', '五十六秒', '五十七秒', '五十八秒', '五十九秒', '六十秒']; var clock; var yearList = []; var monthList = []; var dayList = []; var weekList = []; var hourList = []; var minuteList = []; var secondsList = []; var textList = [ [yearText, yearList], [monthText, monthList], [dayText, dayList], [weekText, weekList], [hourText, hourList], [minuteText, minuteList], [secondsText, secondsList], ] window.onload = function () { init(); setTimeout(function () { initTransition(); }, 0) setTimeout(function () { var timeArr = [0, 0, 0, 0, 0, 0, 0] rotateTransition(timeArr) setInterval(function () { runtime() }, 1000)}, 1000) }; function init() { clock = document.querySelector('#clock'); for (var i in textList) { for (var j in textList[i][0]) { var temp = createLabel(textList[i][0][j]); clock.appendChild(temp); textList[i][1].push(temp); } } console.log(textList); } function createLabel(text) { var div = document.createElement('div'); div.classList.add('label'); div.innerText = text; return div; } function runtime() { var now = new Date(); var month = now.getMonth(); var day = now.getDate(); var week = now.getDay(); var hour = now.getHours(); var minute = now.getMinutes(); var seconds = now.getSeconds(); var timeArr = [0, month, day-1, week, hour, minute, seconds] console.log(timeArr) clearColor(); rotateTransition(timeArr); addColor(timeArr); } function addColor(timeArr) { for (var i = 1; i < timeArr.length; i++) { var index = timeArr[i]; textList[i][1][index].classList.add('now') } } function clearColor() { var now = document.querySelectorAll('.now'); now.forEach(function (item) { item.classList.remove('now'); }) } function initTransition() { for (var i in textList) { for (var item of textList[i][1]) { item.style.transform = 'translate(' + i * 80 + 'px,-50%)' item.style.transformOrigin = -(i * 80) + 'px 50%'; } } } function rotateTransition(timeArr) { for (var i in textList) { for (var j in textList[i][1]) { var temp = textList[i][1][j]; var deg = 360 / textList[i][0].length * (j - timeArr[i]); temp.style.transform = 'translate(' + i * 80 + 'px,-50%)' + ' rotate(' + deg + 'deg)'; } } } </script> </div>", '站点维护中 - '.$blogname.' - '.$blogdescription ,array('response' => '503')); } } add_action('get_header', 'begin_wp_maintenance_mode');
将上述代码添加到主题function.php中就好了,这里需要修改一个参数$logo = zm_get_option(‘logo’);中的zm_get_option(‘logo’)修改为自己主题的logo就好了
样式二对移动端兼容不是很好,可以把两个样式结合一下,pc端显示样式二移动端显示样式一;看个人喜好吧。代码都是来自网络,可以自行百度添加更多样式
如果主题修改完成只需要注销add_action(‘get_header’, ‘begin_wp_maintenance_mode’);就好
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。