标签 WordPress 下的文章 - 🥝 E 家 分 享 🥝
首页
📋 留言板
🔗 友情链接
🛠️ E家百宝箱
❤️ 关于
推荐
🔍 VPS监控
🐉 青龙面板
💽 E家网盘
----------
🔗 CloudFlare
🔗 甲骨文云
🔗 RackNerd
搜 索
1
自动提取 ChromeGo 一键翻墙包内的免费节点
145 阅读
2
【汇总:免费节点 - 每周更新】
114 阅读
3
GigaFile - 日本免费大文件加密分享服务,最长保留文档100天
71 阅读
4
【E家分享月刊系列】2024-12
56 阅读
5
CloudFlare WARP 免费 VPN 搭建教程
55 阅读
精选网站
网站搭建
科学上网搭建
有感而发
软件技巧
Excel技巧
WordPress技巧
登录
搜 索
标签搜索
WordPress
脚本
GitHub
科学上网
哈佛管理导师
E家分享月刊系列
V2ray
Mac软件
AI
Cloudflare
Docker
免费节点
建站在线工具
Excel技巧
Notion
Nginx
ChatGPT
图像编辑
免费图床
网盘资源
E家之长
累计撰写
195
篇文章
累计收到
245
条评论
首页
栏目
精选网站
网站搭建
科学上网搭建
有感而发
软件技巧
Excel技巧
WordPress技巧
页面
📋 留言板
🔗 友情链接
🛠️ E家百宝箱
❤️ 关于
推荐
🔍 VPS监控
🐉 青龙面板
💽 E家网盘
----------
🔗 CloudFlare
🔗 甲骨文云
🔗 RackNerd
用户登录
登录
找到
18
篇与
WordPress
相关的结果
2025-11-16
博客从 Wordpress 迁移到 Typecho
前言E家分享自2020年3月12日正式搭建上线,借助甲骨文云的免费VPS,一直还算稳定。不过近半年发现访问速度越来越慢,尤其是进入后台,有时候甚至要等待10秒钟,简直慢的令人发指。后来分析了一下,也许有以下几个原因:免费空间搭建的时候选择了 CentOS 系统,目前已经停止维护了,除了稳定,基本上没有进一步优化的可能性了。可视化面板选择了宝塔面板,本身就占用了不少资源。为了避免官方版本手机注册的麻烦,当时选择安装的还是降级的中文版系统,其实挺臃肿的,还无法升级。域名托管在 Cloudflare,为了实现 SSL,选择了直接使用 Cloudflare 自己生成的十年证书,但是不得不接受域名要打开代理小云朵,“完全严格”连接方式,对国内访问不友好。为了自己能发电活着,网站添加了谷歌广告,没有通过代码添加到主题中,而是选择 Wordpress 插件 Site Kit by Google 来实现。虽然该插件后台功能很强大,能看到各种数据和每天的收入,但同时也拖累了网站前台和后台的访问速度。Site Kit 简介:Site Kit 是 Google 的官方 WordPress 插件,用于分析人们如何找到和使用您的站点。Site Kit 是一种一站式解决方案,用于部署、管理和从关键的 Google 工具中获得数据,使站点在网络上取得成功。其直接在 WordPress 仪表盘中提供来自多个 Google 产品的权威、最新的数据,便于访问,且完全免费。官方网站:https://sitekit.withgoogle.com/documentation/解决方案马上想到的解决方案是如何提高数据库的访问效率,或者说是减少其调用次数。虽然网站已经采用了 Redis 优化及 Cloudflare 提供的 Cache 方案,但是仍然捉襟见肘。在搜索各种优化 MySQL 数据库的文章中,不经意间浏览到一篇文章,介绍 Wordpress 其实也意识到了数据库访问臃肿的问题,所以社区开发了一个插件 SQLite Database Integration,允许测试 SQLite 与 WordPress 的集成并收集反馈,目标是最终将其纳入 WordPress 核心。SQLite Database Integration 简介:SQLite 插件是一个社区功能插件。目的是允许测试 SQLite 与 WordPress 的集成并收集反馈,目标是最终将其纳入 WordPress 核心。此功能插件包括来自 PHPMyAdmin 项目(特别是 PHPMyAdmin/sql-parser 库的一部分)的代码,根据 GPL v2 或更高版本获得许可。有关 PHPMyAdmin/sql-parser 库的更多信息,请访问 GitHub。安装地址:https://cn.wordpress.org/plugins/sqlite-database-integration/详细对比文章:Comparing WordPress Performance on MySQL vs SQLite看来 SQLite 作为数据库对于一般的小站来说,已经足够使用了。数据库的问题解决了,接下来就是解决 Wordpress 本身臃肿的问题了。经过近3年的使用经验来看,完全可以切换到轻量化的博客框架或静态网页框架。这样就自然的想到了以前接触过的 Typecho,算是 Wordpress 的完美平替,既解决了框架臃肿,也支持 SQLite 本地化,解决了今后数据库备份及搬家的麻烦。最终方案就是迁移到 Typecho 博客程序,具有轻量级、资源占用少、响应速度快以及原生支持Markdown编辑等优点。从 Wordpress 迁移到 Typecho 过程将网站从WordPress迁移到Typecho,主要是为了追求更轻量、更快速和更简洁的博客体验。只要步骤得当,这个过程可以很顺利。我已经为你梳理了清晰的迁移指南和关键注意事项,助你平稳过渡。🔄 迁移流程一览迁移工作主要包含三个阶段:阶段核心任务主要操作🛠️ 前期准备环境配置与数据备份安装Typecho,备份WordPress数据和文件🚀 核心迁移数据转移与文件处理使用专用插件转换数据,迁移上传的媒体文件🎯 后续完善链接调整与效果验证设置永久链接,测试功能和性能📦 迁移步骤详解安装与备份安装Typecho:在服务器新建了新的网站:blog.5iehome.cc,全新安装 Typecho v1.2.1 程序。确保安装的 Typecho 版本与你的服务器环境 PHP 版本兼容。安装的时候,数据库类型选择是 Pdo 驱动 SQLite 适配器,安装程序会随机生成数据库文件,比如:691985e52f36d.db 备份WordPress:这是至关重要的一步。 请务必完整备份 WordPress 的数据库和所有网站文件(尤其是wp-content/uploads/目录下的上传文件)。一种方法是通过 WordPress 后台的工具,导出全部数据,后缀名是 XML。使用插件迁移数据获取插件:下载 Typecho 官方提供的 Wordpress To Typecho 导入插件。安装并配置插件:将插件上传至 Typecho 的 /usr/plugins/ 目录,并在后台启用它。这里既可以导入第一步从 Wordpress 导出的完整 XML 数据,也可以在插件设置中,准确填写你 WordPress 网站所使用的数据库信息(地址、用户名、密码、数据库名、表前缀等)。建议最好是两种博客程序都安装在同一个服务器,这样就可以公用同一个 MySQL 数据库信息。执行转换:在 Typecho 后台找到 从WordPress导入数据 选项,启动转换过程。转换时间会取决于你数据量的大小。处理媒体文件插件通常不自动处理图片等媒体文件。你需要将 Wordpress 的 wp-content/uploads/ 目录下的所有文件,手动复制到 Typecho 的 usr/uploads/ 目录中。PS:这就体现出图片一般都上传到外部图床的好处了。迁移后调整与测试设置永久链接:进入 Typecho 后台,设置**永久链接**(固定链接)。为了保持与原 Wordpress 链接结构一致或避免死链,建议你选择合适的格式。别忘了开启地址重写功能。宝塔面板下设置伪静态规则如下:if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; }检查与测试:内容检查:仔细检查文章、页面、评论等数据是否完整、准确地导入。链接修正:如果发现文章内的图片路径或内部链接仍指向旧地址,可能需要在数据库中进行批量查找和替换。功能测试:测试网站的各项功能,包括链接跳转、搜索、评论提交等是否正常工作。⚠️ 重要注意事项插件与主题: Wordpress 的插件和主题无法直接迁移到 Typecho 。稍后需要为 Typecho 重新寻找和配置功能相近的插件,以及适配的主题。数据库错误处理:如果在导入过程中遇到类似 Data too long for column 'agent' 的数据库错误,可能需要调整 Typecho 相关字段的长度或修改 MySQL 的配置。SEO与重定向:若迁移前后域名或链接结构发生变化,为了避免搜索引擎排名下降和死链,建议设置301重定向,将旧的 Wordpress 链接指向新的 Typecho 链接。后记至此,全部迁移过程完成,后续会记录和分享 Typecho 的插件和主题体验。【END】
2025年11月16日
10 阅读
0 评论
0 点赞
2024-05-19
【WordPress】美化汇总
前言收集网上关于 WordPress 的实用美化技巧,便于后续使用查询。Argon 主题Argon 主题官方的参考文档E家分享的 Argon 主题设置耗时及占用内存在 footer.php 的 </footer> 标签之前加入代码:<!--耗时及占用内存开始--> <span id="momk"></span><span id="momk" style="color: #ff0000;"></span> <script type="text/javascript"> function NewDate(str) { str = str.split('-'); var date = new Date(); date.setUTCFullYear(str[0], str[1] - 1, str[2]); date.setUTCHours(0, 0, 0, 0); return date; } function momxc() { var birthDay =NewDate("2022-04-10"); var today=new Date(); var timeold=today.getTime()-birthDay.getTime(); var sectimeold=timeold/1000 var secondsold=Math.floor(sectimeold); var msPerDay=24*60*60*1000; var e_daysold=timeold/msPerDay; var daysold=Math.floor(e_daysold); var e_hrsold=(daysold-e_daysold)*-24; var hrsold=Math.floor(e_hrsold); var e_minsold=(hrsold-e_hrsold)*-60; var minsold=Math.floor((hrsold-e_hrsold)*-60); var seconds=Math.floor((minsold-e_minsold)*-60).toString(); document.getElementById("momk").innerHTML = "本站已安全运行:"+daysold+"天"+hrsold+"小时"+minsold+"分"+seconds+"秒<br>"; setTimeout(momxc, 1000); }momxc(); </script> <style> #momk @keyframes change25%50%75%100% } </style> <?php printf(' | 耗时 %.3f 秒 | 查询 %d 次 | 内存 %.2f MB |',timer_stop( 0, 3 ),get_num_queries(),memory_get_peak_usage() / 1024 / 1024);?><br> <!--耗时及占用内存结束-->运行时间、耗时及占用内存在 footer.php 的 </footer> 标签之前加入代码:var birthDay =NewDate("2020-03-12");,修改成自己网站的创建时间即可。<!--耗时及占用内存开始--> <span id="momk"></span><span id="momk" style="color: #ff0000;"></span> <script type="text/javascript"> function NewDate(str) { str = str.split('-'); var date = new Date(); date.setUTCFullYear(str[0], str[1] - 1, str[2]); date.setUTCHours(0, 0, 0, 0); return date; } function momxc() { <!--这里要改成自己博客的诞生时间--> var birthDay =NewDate("2020-03-12"); var today=new Date(); var timeold=today.getTime()-birthDay.getTime(); var sectimeold=timeold/1000 var secondsold=Math.floor(sectimeold); var msPerDay=24*60*60*1000; var e_daysold=timeold/msPerDay; var daysold=Math.floor(e_daysold); var e_hrsold=(daysold-e_daysold)*-24; var hrsold=Math.floor(e_hrsold); var e_minsold=(hrsold-e_hrsold)*-60; var minsold=Math.floor((hrsold-e_hrsold)*-60); var seconds=Math.floor((minsold-e_minsold)*-60).toString(); document.getElementById("momk").innerHTML = "本站已安全运行:"+daysold+"天"+hrsold+"小时"+minsold+"分"+seconds+"秒<br>"; setTimeout(momxc, 1000); }momxc(); </script> <style> #momk @keyframes change25%50%75%100% } </style> <?php printf(' | 耗时 %.3f 秒 | 查询 %d 次 | 内存 %.2f MB |',timer_stop( 0, 3 ),get_num_queries(),memory_get_peak_usage() / 1024 / 1024);?><br> <!--耗时及占用内存结束-->鼠标文字特效在 footer.php 的 </body> 标签之前加入代码:<!--鼠标特效开始--> <script type="text/javascript"> var a_idx = 0; jQuery(document).ready(function($) { $("body").click(function(e) { var a = new Array("❤富强❤", "❤民主❤", "❤文明❤", "❤和谐❤", "❤自由❤", "❤平等❤", "❤公正❤", "❤法治❤", "❤爱国❤", "❤敬业❤", "❤诚信❤", "❤友善❤"); var $i = $("<span/>").text(a[a_idx]); a_idx = (a_idx + 1) % a.length; var x = e.pageX, y = e.pageY; $i.css({ "z-index": 999999999999999999999999999999999999999999999999999999999999999999999, "top": y - 20, "left": x, "position": "absolute", "font-weight": "bold", "color": "#ff6651" }); $("body").append($i); $i.animate({ "top": y - 180, "opacity": 0 }, 1500, function() { $i.remove(); }); }); }); </script> <!--鼠标特效结束-->鼠标指针特效之影相随在 footer.php 的 </body> 标签之前加入代码:<!--鼠标样式:两个同心圆,大圆追小圆--> <style type="text/css"> #cursor #cursor.hidden #cursor.hover #cursor.active #clickME </style> <script src="https://cdn.jsdelivr.net/gh/huangwb8/bloghelper@latest/js/cursor_01.js"></script> <!--鼠标样式结束-->鼠标指针特效之仙女棒在 footer.php 的 </body> 标签之前加入代码:<!--全页特效开始--> <script src="https://cdn.jsdelivr.net/gh/huangwb8/bloghelper@latest/js/mobile-detect.js"></script> <script type="text/javascript"> // 设备检测 var md = new MobileDetect(window.navigator.userAgent); // PC生效,手机/平板不生效 // md.mobile(); md.phone(); if(!md.phone()){ if(!md.tablet()){ // 雪花 // $.getScript("https://cdn.jsdelivr.net/gh/huangwb8/bloghelper@latest/js/xiaxue.js"); // 樱花 // $.getScript("https://cdn.jsdelivr.net/gh/huangwb8/bloghelper@latest/js/yinghua.js"); // 小烟花特效 // $.getScript("https://cdn.jsdelivr.net/gh/huangwb8/bloghelper@latest/js/mouse-click.js"); // 大烟花特效 // $.getScript("https://cdn.jsdelivr.net/gh/huangwb8/bloghelper@latest/mouse/mouse-click-02/mouse-canvas.js"); // document.write('<style>#mouse-canvas </style>') // 鼠标移动的仙女棒特效 // $.getScript("https://bensz.onmicrosoft.cn/bloghelper/mouse/halo-dream/fairyDustCursor.min.js"); // 鼠标移动的泡泡特效 // $.getScript("https://bensz.onmicrosoft.cn/bloghelper/mouse/joe/censor10.js"); } } </script> <!--全页特效结束-->文字输入撒花特效在 footer.php 的 </body> 标签之前加入代码:<!--网站输入效果开始--> <script src="https://cdn.jsdelivr.net/gh/huangwb8/bloghelper@latest/js/input-with-fire.js"></script>font awesome v6v6 有一些特别的图标。在 footer.php 里添加以下 css:<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/fontawesome.min.css">在这里搜索图标:https://fontawesome.com/search 。与 v4 版本相比有很多新的图标。额外CSS额外CSS一般用于增加一些自定义样式,比较改大某些字体的属性(大小、颜色)。这里修改的好处就是主题切换、升级时,该设置也不会丢失。/*=========字体设置============*/ /*网站字体*/ /*原则上你可以设置多个字体,然后在不同的部位使用不同的字体。*/ @font-face{ font-family:btfFont; src: url(https://cdn.jsdelivr.net/gh/huangwb8/bloghelper@latest/fonts/13.woff2) format('woff2') } body{ font-family:"btfFont" !important } /*设置加粗字体颜色*/ strong { /*白天*/ color: #A7727D; } html.darkmode strong { /*夜晚*/ color: #FAAB78; } /*说说预览模式的代码字体颜色*/ pre { /*白天*/ color: #A7727D; } html.darkmode pre { /*夜晚*/ color: #FAAB78; } /*横幅字体大小*/ .banner-title { font-size: 2.5em; } .banner-subtitle{ font-size: 20px; } /*文章标题字体大小*/ .post-title { font-size: 30px } /*正文字体大小(不包含代码)*/ .post-content p{ font-size: 1.25rem; } li{ font-size: 1.2rem; } /*评论区字体大小*/ p { font-size: 1.2rem } /*评论发送区字体大小*/ .form-control{ font-size: 1.2rem } /*评论勾选项目字体大小*/ .custom-checkbox .custom-control-input~.custom-control-label{ font-size: 1.2rem } /*评论区代码的强调色*/ code { color: rgba(var(--themecolor-rgbstr)); } /*说说字体大小和颜色设置*/ .shuoshuo-title { font-size: 25px; /* color: rgba(var(--themecolor-rgbstr)); */ } /*尾注字体大小*/ .additional-content-after-post{ font-size: 1.2rem } /*========颜色设置===========*/ /*文章或页面的正文颜色*/ body{ color:#364863 } /*引文属性设置*/ blockquote { /*添加弱主题色为背景色*/ background: rgba(var(--themecolor-rgbstr), 0.1) !important; width: 100% } /*引文颜色 建议用主题色*/ :root { /*也可以用类似于--color-border-on-foreground-deeper: #009688;这样的命令*/ --color-border-on-foreground-deeper: rgba(var(--themecolor-rgbstr)); } /*左侧菜单栏突出颜色修改*/ .leftbar-menu-item > a:hover, .leftbar-menu-item.current > a{ background-color: #f9f9f980; } /*站点概览分隔线颜色修改*/ .site-state-item{ border-left: 1px solid #aaa; } .site-friend-links-title { border-top: 1px dotted #aaa; } #leftbar_tab_tools ul li { padding-top: 3px; padding-bottom: 3px; border-bottom:none; } html.darkmode #leftbar_tab_tools ul li { border-bottom:none; } /*左侧栏搜索框的颜色*/ button#leftbar_search_container { background-color: transparent; } /*========透明设置===========*/ /*白天卡片背景透明*/ .card{ background-color:rgba(255, 255, 255, 0.85) !important; /*backdrop-filter:blur(6px);*//*毛玻璃效果主要属性*/ -webkit-backdrop-filter:blur(6px); } /*小工具栏背景完全透明*/ /*小工具栏是card的子元素,如果用同一个透明度会叠加变色,故改为完全透明*/ .card .widget,.darkmode .card .widget,#post_content > div > div > div.argon-timeline-card.card.bg-gradient-secondary.archive-timeline-title{ background-color:#ffffff00 !important; backdrop-filter:none; -webkit-backdrop-filter:none; } .emotion-keyboard,#fabtn_blog_settings_popup{ background-color:rgba(255, 255, 255, 0.95) !important; } /*分类卡片透明*/ .bg-gradient-secondary{ background:rgba(255, 255, 255, 0.1) !important; backdrop-filter: blur(10px); -webkit-backdrop-filter:blur(10px); } /*夜间透明*/ html.darkmode.bg-white,html.darkmode .card,html.darkmode #footer{ background:rgba(66, 66, 66, 0.9) !important; } html.darkmode #fabtn_blog_settings_popup{ background:rgba(66, 66, 66, 0.95) !important; } /*标签背景 .post-meta-detail-tag { background:rgba(255, 255, 255, 0.5)!important; }*/ /*========排版设置===========*/ /*左侧栏层级置于上层*/ #leftbar_part1 { z-index: 1; } /*分类卡片文本居中*/ #content > div.page-information-card-container > div > div{ text-align:center; } /*子菜单对齐及样式调整*/ .dropdown-menu .dropdown-item>i{ width: 10px; } .dropdown-menu>a { color:var(--themecolor); } .dropdown-menu{ min-width:max-content; } .dropdown-menu .dropdown-item { padding: .5rem 1.5rem 0.5rem 1rem; } .leftbar-menu-subitem{ min-width:max-content; } .leftbar-menu-subitem .leftbar-menu-item>a{ padding: 0rem 1.5rem 0rem 1rem; } /*左侧栏边距修改*/ .tab-content{ padding:10px 0px 0px 0px !important; } .site-author-links{ padding:0px 0px 0px 10px ; } /*目录位置偏移修改*/ #leftbar_catalog{ margin-left: 0px; } /*目录条目边距修改*/ #leftbar_catalog .index-link{ padding: 4px 4px 4px 4px; } /*左侧栏小工具栏字体缩小*/ #leftbar_tab_tools{ font-size: 14px; } /*正文图片边距修改*/ article figure /*正文图片居中显示*/ .fancybox-wrapper { margin: auto; } /*正文表格样式修改*/ article table > tbody > tr > td, article table > tbody > tr > th, article table > tfoot > tr > td, article table > tfoot > tr > th, article table > thead > tr > td, article table > thead > tr > th{ padding: 8px 10px; border: 1px solid; } /*表格居中样式*/ .wp-block-table.aligncenter /*回顶图标放大*/ button#fabtn_back_to_top, button#fabtn_go_to_comment, button#fabtn_toggle_blog_settings_popup, button#fabtn_toggle_sides, button#fabtn_open_sidebar{ font-size: 1.2rem; } /*顶栏菜单*/ /*这里也可以设置刚刚我们设置的btfFont字体。试试看!*/ .navbar-nav .nav-link { font-size: 1.2rem; font-family: 'btfFont'; } .nav-link-inner--text { /*顶栏菜单字体大小*/ font-size: 1.2rem; } .navbar-nav .nav-item { margin-right:0; } .mr-lg-5, .mx-lg-5 { margin-right:1rem !important; } .navbar-toggler-icon { width: 1.5rem; height: 1.5rem; } .navbar-expand-lg .navbar-nav .nav-link { padding-right: 0.9rem; padding-left: 1rem; } /*顶栏图标*/ .navbar-brand { font-family: 'Noto Serif SC',serif; font-size: 1.25rem; /*顶栏图标边界微调*/ margin-right: 0rem; /*左右偏移*/ padding-bottom: 0.3rem; } .navbar-brand img { /* 图片高度*/ height: 24px; } /*隐藏wp-SEO插件带来的线条阴影(不一定要装)*/ *[style='position: relative; z-index: 99998;'] { display: none; } /*网站黑白色(悼念)- 额外CSS的最底部(否则容易和其它CSS代码冲突)*/ html { filter: grayscale(100%); -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); -o-filter: grayscale(100%); filter: url("data:image/svg+xml;utf8,#grayscale"); filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); -webkit-filter: grayscale(1); }Twenty Twelve 木头人修改精简版项目地址:https://github.com/huhexian/2012-huhexian在 style.css 中加入样式代码:标签云/* 标签云样式修改 */ .tagcloud { overflow:hidden; line-height:20px; } .tagcloud a { font-size: 13px!important; padding: 3px; margin-right: 3px; float: left; display: block; } .tagcloud a:not(.dots):hover { background-color: #336699; color: #FFFFFF; border:0; }引用/*引用*/ .entry-content blockquote, .comment-content blockquote { background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTg1NTQxNjE3MDQ5IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM3MTgiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTQwNi41NTcyNTcgMTE4LjUzNTMxNHYxMzcuOTAzNTQzYy04Ny4xNDI0IDE5Ljk1MzM3MS0xMjguODkyMzQzIDc0LjQ3NDA1Ny0xMzQuMzYzNDI4IDE3Ni4wMTA5NzJoMTM0LjM2MzQyOHYzMjYuNzQzNzcxSDExNC4yOTMwMjlWNDkwLjUxMDYyOWMwLTE5NC4xNzk2NTcgODMuNDk5ODg2LTM0My4wMTA3NDMgMjkyLjI2NDIyOC0zNzEuOTc1MzE1bTAtNTguNTE0Mjg1Yy0yLjY3NzAyOSAwLTUuMzU0MDU3IDAuMTkwMTcxLTguMDQ1NzE0IDAuNTU1ODg1QzE3Ny41MDMwODYgOTEuMjM4NCA1NS43Nzg3NDMgMjQzLjkzMTQyOSA1NS43Nzg3NDMgNDkwLjUxMDYyOXYyNjguNjY4MzQyYTU4LjUxNDI4NiA1OC41MTQyODYgMCAwIDAgNTguNTE0Mjg2IDU4LjUxNDI4NmgyOTIuMjY0MjI4YTU4LjUxNDI4NiA1OC41MTQyODYgMCAwIDAgNTguNTE0Mjg2LTU4LjUxNDI4NlY0MzIuNDQ5ODI5YTU4LjUxNDI4NiA1OC41MTQyODYgMCAwIDAtNTguNTE0Mjg2LTU4LjUxNDI4NmgtNjQuNTI2NjI4YzE0LjQ1MzAyOS0zNy42MTAwNTcgNDEuNDI4MTE0LTUyLjE4MDExNCA3Ny41ODk5NDItNjAuNDU5ODg2YTU4LjUxNDI4NiA1OC41MTQyODYgMCAwIDAgNDUuNDUwOTcyLTU3LjAzNjhWMTE4LjUzNTMxNGE1OC41MTQyODYgNTguNTE0Mjg2IDAgMCAwLTU4LjUxNDI4Ni01OC41MTQyODV6TTkwOS43MDY5NzEgMjY0LjgyMTAyOXYxMzcuOTAzNTQyYy04Ny4xMTMxNDMgMTkuOTUzMzcxLTEyOC44NjMwODYgNzQuNDc0MDU3LTEzNC4zMzQxNzEgMTc2LjAxMDk3MmgxMzQuMzM0MTcxdjMyNi43NDM3NzFINjE3LjQ0Mjc0M1Y2MzYuNzk2MzQzYzAtMTk0LjE3OTY1NyA4My41MTQ1MTQtMzQzLjAxMDc0MyAyOTIuMjY0MjI4LTM3MS45NzUzMTRtMC01OC41MTQyODZjLTIuNjc3MDI5IDAtNS4zNTQwNTcgMC4xOTAxNzEtOC4wNDU3MTQgMC41NTU4ODYtMjIxLjAwODQ1NyAzMC42NzYxMTQtMzQyLjczMjggMTgzLjM1NDUxNC0zNDIuNzMyOCA0MjkuOTQ4MzQydjI2OC42NjgzNDNhNTguNTE0Mjg2IDU4LjUxNDI4NiAwIDAgMCA1OC41MTQyODYgNTguNTE0Mjg2aDI5Mi4yNjQyMjhhNTguNTE0Mjg2IDU4LjUxNDI4NiAwIDAgMCA1OC41MTQyODYtNTguNTE0Mjg2VjU3OC43MzU1NDNhNTguNTE0Mjg2IDU4LjUxNDI4NiAwIDAgMC01OC41MTQyODYtNTguNTE0Mjg2aC02NC40OTczNzFjMTQuNDUzMDI5LTM3LjYxMDA1NyA0MS40MTM0ODYtNTIuMTgwMTE0IDc3LjU3NTMxNC02MC40NTk4ODZhNTguNTE0Mjg2IDU4LjUxNDI4NiAwIDAgMCA0NS40MzYzNDMtNTcuMDM2OHYtMTM3LjkwMzU0MmE1OC41NDM1NDMgNTguNTQzNTQzIDAgMCAwLTU4LjUxNDI4Ni01OC41MTQyODZ6IiBmaWxsPSIjY2YzZjc0IiBwLWlkPSIzNzE5Ij48L3BhdGg+PHBhdGggZD0iTTM1OS42MTQxNzEgNjY2LjU1MDg1N2ExNC42Mjg1NzEgMTQuNjI4NTcxIDAgMCAxLTE0LjYyODU3MS0xNC42Mjg1NzFWNDkxLjI3MTMxNGgtNjguMDgxMzcxYTE0LjYyODU3MSAxNC42Mjg1NzEgMCAxIDEgMC0yOS4yNTcxNDNoODcuNzcxNDI4YzguMDg5NiAwIDkuNTY3MDg2IDYuMjkwMjg2IDkuNTY3MDg2IDE0LjM2NTI1OHYxNzUuNTQyODU3YTE0LjYyODU3MSAxNC42Mjg1NzEgMCAwIDEtMTQuNjI4NTcyIDE0LjYyODU3MXpNODcxLjYxNDE3MSA4NDIuMDkzNzE0YTE0LjYyODU3MSAxNC42Mjg1NzEgMCAwIDEtMTQuNjI4NTcxLTE0LjYyODU3MXYtMjkuMjU3MTQzYTE0LjYyODU3MSAxNC42Mjg1NzEgMCAxIDEgMjkuMjU3MTQzIDB2MjkuMjU3MTQzYTE0LjYyODU3MSAxNC42Mjg1NzEgMCAwIDEtMTQuNjI4NTcyIDE0LjYyODU3MXpNODcxLjYxNDE3MSA3NTQuMzIyMjg2YTE0LjYyODU3MSAxNC42Mjg1NzEgMCAwIDEtMTQuNjI4NTcxLTE0LjYyODU3MnYtMTAyLjEzNjY4NWgtNjguMDgxMzcxYTE0LjYyODU3MSAxNC42Mjg1NzEgMCAxIDEgMC0yOS4yNTcxNDNoODcuNzcxNDI4YzguMDg5NiAwIDkuNTY3MDg2IDYuMjkwMjg2IDkuNTY3MDg2IDE0LjM2NTI1N3YxMTcuMDI4NTcxYTE0LjYyODU3MSAxNC42Mjg1NzEgMCAwIDEtMTQuNjI4NTcyIDE0LjYyODU3MnoiIGZpbGw9IiNjZjNmNzQiIHAtaWQ9IjM3MjAiPjwvcGF0aD48L3N2Zz4=); background-repeat: no-repeat; color: rgba(0,0,0,.7); margin-top: 0; margin-bottom: 15px; margin-left: 0; margin-right: 0; padding: 20px 20px 20px 60px; position: relative;}头像转动/*头像转动*/ .avatar .avatar:hover调整网页宽度/* 网页宽度 */ .site { margin: 0 auto; max-width: 960px; overflow: hidden; } html { margin-top: 32px !important; }小工具及首页文章标题下划线/* 小工具标题字体样式以及下横线 */ .widget-title { font-size: 18px; font-weight: normal; color: #21759b; border-bottom: 1px solid #ededed; } /* 首页文章标题行高以及下横线 */ .entry-header .entry-title { line-height: 2.181818182; border-bottom: 1px solid #ededed; }二级、三级标题样式/*标题样式*/ .entry-content h2, .comment-content h2, .mu_register h2 { font-weight: bold; background-color: #f6f6f6; margin: 20px 0; border-bottom: 0px solid #21759b; padding: 5px 12px; border-left: 5px solid #21759b; } .entry-content h3, .comment-content h3, .mu_register h3 { font-weight: bold; background-color: #f6f6f6; margin: 20px 0; border-bottom: 0px solid #53a7dc; padding: 0px 12px; border-left: 5px solid #53a7dc; }归档页面样式修改#archives { position: relative; } #archives h3 { margin-bottom: 0; padding: 0 15px; border-bottom: 1px solid #ddd; font-size: 20px; font-weight: 400; text-align: center; letter-spacing: 5px } #archives ul { list-style: none; margin: 0 30px; padding: 10px 0 20px 10px; border-left: 1px solid #ddd; font-size: 18px } #archives li { list-style: none; position: relative; line-height: 30px } #archives ul ul { margin: -15px 0 0 0; padding: 15px 0 10px 0 } #archives ul ul li { padding: 0 0 0 15px } #archives ul ul li:before { content: ""; position: absolute; left: 0; top: 10px; border-top: 5px dashed transparent; border-bottom: 5px dashed transparent; border-left: 10px solid #ddd } #al_expand_collapse { display: inline-block; line-height: 24px; padding: 0 10px; color: #fff; font-size: 12px; text-decoration: none; background: linear-gradient(to bottom, #4caf50 20%, #388e3c 80%) repeat scroll 0 0 transparent;/*这个颜色和下面的我都做了一些修改*/ background: -webkit-linear-gradient(to bottom, #4caf50 20%, #388e3c 80%) repeat scroll 0 0 transparent } #al_expand_collapse:hover { background: linear-gradient(to bottom, #388e3c 20%, #4caf50 80%) repeat scroll 0 0 transparent; background: -webkit-linear-gradient(to bottom, #388e3c 20%, #4caf50 80%) repeat scroll 0 0 transparent } #archives em { padding-left: 5px; font-size: 12px; color: #777 } #archives .al_mon { padding-left: 5px; font-size: 14px; font-weight: 700 } #archives .al_mon:after { content: ""; position: absolute; left: -10px; top: 15px; width: 10px; height: 1px; background: #ddd } #archives .al_mon em { font-size: 12px; font-weight: 400 }添加面包屑导航在 functions.php 中加入下列代码:// 面包屑导航 function breadcrumb() { // Check if is front/home page, return if ( is_front_page() ) { return; } // Define global $post; $custom_taxonomy = ''; // If you have custom taxonomy place it here $defaults = array( 'seperator' => ' / ', 'id' => 'breadcrumb', 'classes' => 'breadcrumb', 'home_title' => esc_html__( '⚐ Home', '' ) ); $sep = '<li class="seperator">'. esc_html( $defaults['seperator'] ) .'</li>'; // Start the breadcrumb with a link to your homepage echo '<ul id="'. esc_attr( $defaults['id'] ) .'" class="'. esc_attr( $defaults['classes'] ) .'">'; // Creating home link echo '<li class="item"><a href="'. get_home_url() .'">'. esc_html( $defaults['home_title'] ) .'</a></li>' . $sep; if ( is_single() ) { // Get posts type $post_type = get_post_type(); // If post type is not post if( $post_type != 'post' ) { $post_type_object = get_post_type_object( $post_type ); $post_type_link = get_post_type_archive_link( $post_type ); echo '<li class="item item-cat"><a href="'. $post_type_link .'">'. $post_type_object->labels->name .'</a></li>'. $sep; } // Get categories $category = get_the_category( $post->ID ); // If category not empty if( !empty( $category ) ) { // Arrange category parent to child $category_values = array_values( $category ); $get_last_category = end( $category_values ); // $get_last_category = $category[count($category) - 1]; $get_parent_category = rtrim( get_category_parents( $get_last_category->term_id, true, ',' ), ',' ); $cat_parent = explode( ',', $get_parent_category ); // Store category in $display_category $display_category = ''; foreach( $cat_parent as $p ) { $display_category .= '<li class="item item-cat">'. $p .'</li>' . $sep; } } // If it's a custom post type within a custom taxonomy $taxonomy_exists = taxonomy_exists( $custom_taxonomy ); if( empty( $get_last_category ) && !empty( $custom_taxonomy ) && $taxonomy_exists ) { $taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy ); $cat_id = $taxonomy_terms[0]->term_id; $cat_link = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy); $cat_name = $taxonomy_terms[0]->name; } // Check if the post is in a category if( !empty( $get_last_category ) ) { echo $display_category; echo '<li class="item item-current">'. get_the_title() .'</li>'; } else if( !empty( $cat_id ) ) { echo '<li class="item item-cat"><a href="'. $cat_link .'">'. $cat_name .'</a></li>' . $sep; echo '<li class="item-current item">'. get_the_title() .'</li>'; } else { echo '<li class="item-current item">'. get_the_title() .'</li>'; } } else if( is_archive() ) { if( is_tax() ) { // Get posts type $post_type = get_post_type(); // If post type is not post if( $post_type != 'post' ) { $post_type_object = get_post_type_object( $post_type ); $post_type_link = get_post_type_archive_link( $post_type ); echo '<li class="item item-cat item-custom-post-type-' . $post_type . '"><a href="' . $post_type_link . '">' . $post_type_object->labels->name . '</a></li>' . $sep; } $custom_tax_name = get_queried_object()->name; echo '<li class="item item-current">'. $custom_tax_name .'</li>'; } else if ( is_category() ) { $parent = get_queried_object()->category_parent; if ( $parent !== 0 ) { $parent_category = get_category( $parent ); $category_link = get_category_link( $parent ); echo '<li class="item"><a href="'. esc_url( $category_link ) .'">'. $parent_category->name .'</a></li>' . $sep; } echo '<li class="item item-current">'. single_cat_title( '', false ) .'</li>'; } else if ( is_tag() ) { // Get tag information $term_id = get_query_var('tag_id'); $taxonomy = 'post_tag'; $args = 'include=' . $term_id; $terms = get_terms( $taxonomy, $args ); $get_term_name = $terms[0]->name; // Display the tag name echo '<li class="item-current item">'. $get_term_name .'</li>'; } else if( is_day() ) { // Day archive // Year link echo '<li class="item-year item"><a href="'. get_year_link( get_the_time('Y') ) .'">'. get_the_time('Y') . '年</a></li>' . $sep; // Month link echo '<li class="item-month item"><a href="'. get_month_link( get_the_time('Y'), get_the_time('m') ) .'">'. get_the_time('M') .'</a></li>' . $sep; // Day display echo '<li class="item-current item">'. get_the_time('jS') .' '. get_the_time('M'). '</li>'; } else if( is_month() ) { // Month archive // Year link echo '<li class="item-year item"><a href="'. get_year_link( get_the_time('Y') ) .'">'. get_the_time('Y') . '年</a></li>' . $sep; // Month Display echo '<li class="item-month item-current item">'. get_the_time('M') .'</li>'; } else if ( is_year() ) { // Year Display echo '<li class="item-year item-current item">'. get_the_time('Y') .'年</li>'; } else if ( is_author() ) { // Auhor archive // Get the author information global $author; $userdata = get_userdata( $author ); // Display author name echo '<li class="item-current item">'. 'Author: '. $userdata->display_name . '</li>'; } else { echo '<li class="item item-current">'. post_type_archive_title() .'</li>'; } } else if ( is_page() ) { // Standard page if( $post->post_parent ) { // If child page, get parents $anc = get_post_ancestors( $post->ID ); // Get parents in the right order $anc = array_reverse( $anc ); // Parent page loop if ( !isset( $parents ) ) $parents = null; foreach ( $anc as $ancestor ) { $parents .= '<li class="item-parent item"><a href="'. get_permalink( $ancestor ) .'">'. get_the_title( $ancestor ) .'</a></li>' . $sep; } // Display parent pages echo $parents; // Current page echo '<li class="item-current item">'. get_the_title() .'</li>'; } else { // Just display current page if not parents echo '<li class="item-current item">'. get_the_title() .'</li>'; } } else if ( is_search() ) { // Search results page echo '<li class="item-current item">Search results for: '. get_search_query() .'</li>'; } else if ( is_404() ) { // 404 page echo '<li class="item-current item">' . 'Error 404' . '</li>'; } // End breadcrumb echo '</ul>'; }然后在 header.php 末尾添加下列代码:<?php// 文章页面添加面包屑导航 if ( function_exists('breadcrumb') ) breadcrumb(); ?>最后在 style.css 中添加样式代码:/* 面包屑导航样式 */ .breadcrumb { font-size: 12px; color: #888; margin:0 auto; } .breadcrumb a { color: #888; } .breadcrumb a:not(.dots):hover { color: #CC0033; } .breadcrumb li { display: inline; line-height:20px; }首页文章标题、正文标题下方添加元素统计每篇文章的字数代码:在 functions.php 文件添加代码。//字数统计 function zm_count_words ($text) { global $post; $output=''; if (empty($text)) { $text = $post->post_content; if (mb_strlen($output, 'UTF-8') < mb_strlen($text, 'UTF-8')) $output .= '<span class="word-count">共' . mb_strlen(preg_replace('/\s/','',html_entity_decode(strip_tags($post->post_content))),'UTF-8') .'字</span>'; return $output; } }打开 content.php,找到以下代码:<?php if ( is_single() ) : ?> <h1 class="entry-title"><?php the_title(); ?></h1> <?php else : ?>然后在 <?php else: ?> 的上面添加以下代码:<p class="meta"><!--文章页标题下标签--> Auth:<?php the_author_nickname(); ?>       Date:<?php echo the_time('Y/m/j'); ?>       Cat:<?php the_category('、'); ?>       Word:<?php echo zm_count_words($text); ?> </p>在 content.php 找到 <footer></footer>,将这两个标签内(包括这两个标签)的所有内容删除,并替换为以下代码:<?php if ( is_single() ) : ?> <footer class="content-foot"><!--文章页脚部显示修改--> <?php the_tags('⚑Tags:','、'); ?>       </footer><!-- .content-foot --> <?php else : ?> <footer class="home-foot"><!--除文章页脚部显示修改--> ◷<?php echo the_time('Y/m/j'); ?>   @<?php the_author_nickname(); ?>   ▤<?php the_category('、'); ?>   ⚑<?php the_tags('','、'); ?> <?php edit_post_link( __( '——编辑', 'twentytwelve-child' ), '<span class="edit-link">', '</span>' ); ?> </footer><!-- .entry-meta --> <?php endif; // is_single() ?>在 style.css 中添加样式代码:/* 文章页标题、meta块、和脚部样式修改 */ #content .title { font-size: 24px; padding-bottom: 24px; text-align: center; } #content .meta { font-size: 13px; padding: 10px 0 10px 0; border: 1px dashed rgba(0, 0, 0, 0.15); text-align: center; letter-spacing: 0.035rem; } #content .content-foot { font-size: 13px; padding: 10px 0 10px 24px; margin: 0 -24px -24px -24px; letter-spacing: 0.035rem; background-color: #ededed; }禁止加载语言包在 functions.php 中加入下列代码://关闭翻译 add_filter('locale', function($locale) { $locale = ( is_admin() ) ? $locale : 'en_US'; return $locale; });为摘要添加“继续阅读”字样在 functions.php 中加入下列代码://为摘要添加继续阅读字样 // Remove the ... from excerpt and change the text function change_excerpt_more() { function new_excerpt_more($more) { // Use .read-more to style the link return '......<span class="read-more"> <a href="' . get_permalink($post->ID) . '"><br/><br/>继续阅读»»»</a></span>'; } add_filter('excerpt_more', 'new_excerpt_more'); } add_action('after_setup_theme', 'change_excerpt_more');页面添加 html 后缀在 functions.php 中加入下列代码://WordPress页面链接添加html后缀 function html_page_permalink() { global $wp_rewrite; if ( !strpos($wp_rewrite->get_page_permastruct(), '.html')){ $wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html'; } } add_action('init', 'html_page_permalink', -1);修改全局字体为“霞鹜文楷”在 header.php 添加下列代码:<!-- Screen version --> <link rel="stylesheet" href="https://npm.elemecdn.com/lxgw-wenkai-screen-webfont@1.1.0/style.css" /> <style> body { /* Screen version */ font-family: "LXGW WenKai Screen", sans-serif; } </style>网站统计小工具在主题目录新建文件 widget-websitestat.php,并添加下列代码:<?php // WordPress统计信息小工具 // 定义小工具的类 EfanWebsitestat class EfanWebsitestat extends WP_Widget{ function __construct(){ // 定义小工具的构造函数 $widget_ops = array('classname' => 'widget_Websitestat', 'description' => '显示网站的统计信息'); // $this->WP_Widget(false, '网站统计', $widget_ops); parent::__construct( false, '网站统计', $widget_ops); } function form($instance){ // 表单函数,控制后台显示 // $instance 为之前保存过的数据 // 如果之前没有数据的话,设置默认量 $instance = wp_parse_args( (array)$instance, array( 'title' => '网站信息统计', 'establish_time' => '2021-01-01' ) ); $title = htmlspecialchars($instance['title']); $establish_time = htmlspecialchars($instance['establish_time']); // 表格布局输出表单 $output = '<table>'; $output .= '<tr><td>标题</td><td>'; $output .= '<input id="'.$this->get_field_id('title') .'" name="'.$this->get_field_name('title').'" type="text" value="'.$instance['title'].'" />'; $output .= '</td></tr><tr><td>建站时间:</td><td>'; $output .= '<input id="'.$this->get_field_id('establish_time') .'" name="'.$this->get_field_name('establish_time').'" type="text" value="'.$instance['establish_time'].'" />'; $output .= '</td></tr></table>'; echo $output; } function update($new_instance, $old_instance){ // 更新数据的函数 $instance = $old_instance; // 数据处理 $instance['title'] = strip_tags(stripslashes($new_instance['title'])); $instance['establish_time'] = strip_tags(stripslashes($new_instance['establish_time'])); return $instance; } function widget($args, $instance){ extract($args); //展开数组 $title = apply_filters('widget_title',empty($instance['title']) ? ' ' : $instance['title']); $establish_time = empty($instance['establish_time']) ? '2021-01-01' : $instance['establish_time']; echo $before_widget; echo $before_title . $title . $after_title; echo '<div class="widgest-boys"><ul>'; $this->efan_get_websitestat($establish_time); echo '</ul></div>'; echo $after_widget; } function efan_get_websitestat($establish_time){ // 相关数据的获取 global $wpdb; $count_posts = wp_count_posts(); $published_posts = $count_posts->publish; $comments_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments"); $time = floor((time()-strtotime($establish_time))/86400); $count_tags = wp_count_terms('post_tag'); $count_pages = wp_count_posts('page'); $link = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->links WHERE link_visible = 'Y'"); $users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users"); $last = $wpdb->get_results("SELECT MAX(post_modified) AS MAX_m FROM $wpdb->posts WHERE (post_type = 'post' OR post_type = 'page') AND (post_status = 'publish' OR post_status = 'private')"); $last = date('Y-m-d', strtotime($last[0]->MAX_m)); $total_views = $wpdb->get_var("SELECT SUM(meta_value+0) FROM $wpdb->postmeta WHERE meta_key = 'views'"); // 显示数据 $output = '<div class="widgest-bg widgest-bg1 wb-top"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-snowflake-o" aria-hidden="true"></i> 文章总数:'; $output .= $published_posts; $output .= ' 篇</li></div></div></div>'; $output .= '<div class="widgest-bg widgest-bg2"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-paper-plane-o" aria-hidden="true"></i> 评论数目:'; $output .= $comments_count; $output .= ' 条</li></div></div></div>'; $output .= '<div class="widgest-bg widgest-bg3"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-star-o" aria-hidden="true"></i> 标签总数:'; $output .= $count_tags; $output .= ' 个</li></div></div></div>'; $output .= '<div class="widgest-bg widgest-bg4"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-pie-chart" aria-hidden="true"></i> 浏览次数:'; $output .= $total_views; $output .= ' 次</li></div></div></div>'; $output .= '<div class="widgest-bg widgest-bg5"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-link" aria-hidden="true"></i> 友链总数:'; $output .= $link; $output .= ' 个</li></div></div></div>'; $output .= '<div class="widgest-bg widgest-bg7"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-refresh" aria-hidden="true"></i> 运行天数:'; $output .= $time; $output .= ' 天</li></div></div></div>'; $output .= '<div class="widgest-bg widgest-bg8"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-calendar" aria-hidden="true"></i> 建站时间:'; $output .= $establish_time; $output .= '</li></div></div></div>'; $output .= '<div class="widgest-bg widgest-bg9"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-clock-o" aria-hidden="true"></i> 最后更新:'; $output .= $last; $output .= '</li></div></div></div>'; // 页面生成耗时+数据库查询 $output .= '<div class="widgest-bg widgest-bg10"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-podcast" aria-hidden="true"></i> 数据查询:'; $output .= get_num_queries(); $output .= ' 次 </li></div></div></div>'; $output .= '<div class="widgest-bg widgest-bg11 wb-bottom"><div class="widgest-main"><div class="widgest-meat"><li><i class="fa fa-hourglass-half" aria-hidden="true"></i> 生成耗时:'; $output .= timer_stop(0,5); $output .= '秒</li></div></div></div>'; echo $output; } } function EfanWebsitestat(){ // 注册小工具 register_widget('EfanWebsitestat'); } add_action('widgets_init','EfanWebsitestat'); ?>然后在 functions.php 文件中加入下列代码://添加站点统计小工具 include("widget-websitestat.php");最后在网站后台添加小工具即可。其他百度统计在 footer.php 文件中 </body> 之前,添加如下代码:<!--百度统计--> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?71e39fd0f5218799bd4c9fc2016ee4b3"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>鼠标点击烟花特效在 footer.php 文件中 </body> 之前,添加如下代码:<!--网站添加鼠标点击烟花特效--> <canvas class="fireworks" style="position:fixed;left:0;top:0;z-index:99999999;pointer-events:none;"></canvas> <script type="text/javascript" src="https://www.5iehome.cc/wp-content/themes/argon/firework.js"></script>依米花播放器在 footer.php 文件中 </body> 之前,添加如下代码:<!--依米花播放器--> <script id="xplayer" src="https://music.piphp.com/Static/player/player.js" key="6280ecc0ce424" m="1"></script>网站添加看板娘在 footer.php 文件中 </body> 之前,添加如下代码:<!--网站添加看板娘--> <script src="https://eqcn.ajz.miesnfu.com/wp-content/plugins/wp-3d-pony/live2dw/lib/L2Dwidget.min.js"></script> <script> L2Dwidget.init({ "model": { //jsonpath控制显示模型 jsonPath: "https://imuncle.github.io/live2d/model/wanko/wanko.model.json", "scale": 1 }, "display": { "position": "right", //表现位置 "width": 100, //模型的宽度 "height": 200, //模型的高度 "hOffset": 220, "vOffset": -40 }, "mobile": { "show": true, "scale": 0.5 }, "react": { "opacityDefault": 0.7, "opacityOnHover": 0.2 } }); </script>参考文档https://blognas.hwb0307.com/linux/docker/730https://blognas.hwb0307.com/linux/docker/744https://yinji.org/5029.html#toc-6【END】
2024年05月19日
27 阅读
0 评论
0 点赞
2023-09-02
【WordPress】优化汇总
前言收集网上关于 WordPress 的实用优化技巧,便于后续使用查询。服务器配置WordPress 作为一款强大的程序,对性能的要求自然不低,服务器计算能力会直接影响到网站速度及并发。PHP:推荐使用 PHP7 及以上版本,性能有极大提升启用 PHP OPCache 扩展,PHP 代码编译加速优化MySQL:推荐使用 MySQL 5.6 及以上版本合理优化 MySQL 参数使用 PHP Memcached 扩展,内存缓存加速使用 Redis 加速网站访问速度以下为在宝塔面板内的安装和设置操作,设置完成后,重启服务生效。安装 PHP 扩展 访问 Github 项目页面下载插件包:https://github.com/tollmanz/wordpress-pecl-memcached-object-cache下载并解压得到的 object-cache.php,上传到 wp-content 目录即可开启 Memcached 缓存。编辑 wp-config.php,添加如下内容,使 Memcached 生效/** Memcached Cache */ define('ENABLE_CACHE', true); define('WP_CACHE', true); define('WP_CACHE_KEY_SALT', '5iehome.cc');PHP Session 配置选择 redis 存储模式 根据自己服务器情况,选择 MySQL 性能优化方案 优化 MySQL 5.7 的内存占用编辑 /etc/mysql/mysql.conf.d/mysqld.cnf,在 [mysqld] 下方添加如下代码[mysqld] # Memory optimization performance_schema_max_table_instances=200 table_definition_cache=100 table_open_cache=100测试 WordPress 网站性能PageSpeed InsightsGTmetrixWebPageTestPingdom Tools程序优化修改配置文件WordPress 中许多不必要的功能可以通过修改配置文件的方式关闭。 注意:在进行相关操作前务必备份好源文件!在 wp-config.php 文件后添加下列内容//WordPress自定义优化项。 define('WP_DEBUG', false); //关闭DEBUG define('AUTOSAVE_INTERVAL', 86400); //关闭自动保存 define('WP_POST_REVISIONS', false); //关闭修订 define('DISALLOW_FILE_EDIT', true); //关闭文件修改 define('FS_CHMOD_DIR', (0755 & ~ umask())); //目录权限755 define('FS_CHMOD_FILE', (0644 & ~ umask())); //文件权限644 //禁止更新(不建议) //define('AUTOMATIC_UPDATER_DISABLED', true); //define('WP_AUTO_UPDATE_CORE', false);在当前主题目录中 function.php 后添加下列内容//WordPress主题 functions.php 优化项 //引入方式:在主题functions.php后添加 //关闭谷歌字体 function xintheme_ remove_ gutenberg_ styles(Stranslation,$text, $context,$domain) { if($context != 'Google Font Name Tand Variants’|| $text != 'Noto Serif:400,400i,700,700i') { return $translation; } return 'off'; } //彻底关闭自动更新 add_ filter(' automatic_ updater_disabled', '_return_true'); //关闭更新检查定时作业 remove_ action('init', 'wp_schedule_update_checks'); //移除已有的版本检查定时作业 wp_clear_scheduled_hook('wp_version_check'); //移除已有的插件更新定时作业 wp_clear_scheduled_hook('wp_update_plugins'); //移除已有的主题更新定时作业 wp_clear_scheduled_hook('wp_update_themes'); //移除已有的自动更新定时作业 wp_clear_scheduled_hook('wp_maybe_auto_update'); //移除后台内核更新检查 remove_action('admin_init','_maby_update_core'); //移除后台插件更新检查 remove_ action( 'load-plugins.php', 'wp_update_plugins'); remove_ action( 'load-update.php', 'wp_update_plugins'); remove_ action( 'load-update-core.php', 'wp_update_plugins'); remove_ action('admin_init','_maybe_update_plugins'); //移除后台主题更新检查 remove_ action( 'load-themes.php','wp_update_themes'); remove_ action( 'load-update.php','wp_update_themes'); remove_ action( 'load-update-core.php', 'wp_update_themes'); remove_ action( 'admin_init','_maybe_update_themes'); //移除不必要的信息,如WordPress版本 remove_action('wp_head', 'feed_links', 2); //移除feed remove_action('wp_head', 'feed_links_extra', 3); //移除feed remove_action('wp_head', 'rest_output_link_wp_head', 10); remove_action('wp_head', 'rsd_link'); //移除离线编辑器开放接口 remove_action('wp_head', 'wlwmanifest_link'); //移除离线编辑器开放接口 remove_action('wp_head', 'index_rel_link'); //去除本页唯一链接信息 remove_action('wp_head', 'parent_post_rel_link', 10, 0); //清除前后文信息 remove_action('wp_head', 'start_post_rel_link', 10, 0); //清除前后文信息 remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); remove_action('wp_head', 'locale_stylesheet'); remove_action('publish_future_post','check_and_publish_future_post',10, 1); remove_action('wp_head', 'noindex', 1); remove_action('wp_head', 'wp_print_styles', 8); //载入css remove_action('wp_head', 'wp_print_head_scripts', 9); remove_action('wp_head', 'print_emoji_detection_script', 7); remove_action('wp_head', 'wp_generator'); //移除WordPress版本 remove_action('wp_head', 'rel_canonical'); remove_action('wp_footer', 'wp_print_footer_scripts'); remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0); remove_action('template_redirect', 'wp_shortlink_header', 11, 0); add_action('widgets_init', 'my_remove_recent_comments_style'); function my_remove_recent_comments_style() { global $wp_widget_factory; remove_action('wp_head', array($wp_widget_factory->widgets['WP_Widget_Recent_Comments'] ,'recent_comments_style')); } //评论框禁止HTML add_filter('pre_comment_content', 'wp_specialchars'); //停用链接猜测 add_filter('redirect_canonical', 'stop_guessing'); function stop_guessing($url) { if (is_404()) { return false; } return $url; } //禁止自动保存 remove_filter('the_content', 'wptexturize'); remove_action('pre_post_update', 'wp_save_post_revision'); add_action('wp_print_scripts', 'disable_autosave'); function disable_autosave() { wp_deregister_script('autosave'); } //禁用wp-embed.min.js function disable_embeds_init() { /* @var WP $wp */ global $wp; // Remove the embed query var. $wp->public_query_vars = array_diff( $wp->public_query_vars, array( 'embed', ) ); // Remove the REST API endpoint. remove_action( 'rest_api_init', 'wp_oembed_register_route' ); // Turn off add_filter( 'embed_oembed_discover', '__return_false' ); // Don't filter oEmbed results. remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 ); // Remove oEmbed discovery links. remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); // Remove oEmbed-specific JavaScript from the front-end and back-end. remove_action( 'wp_head', 'wp_oembed_add_host_js' ); add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' ); // Remove all embeds rewrite rules. add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' ); } add_action( 'init', 'disable_embeds_init', 9999 ); /** * Removes the 'wpembed' TinyMCE plugin. * * @since 1.0.0 * * @param array $plugins List of TinyMCE plugins. * @return array The modified list. */ function disable_embeds_tiny_mce_plugin( $plugins ) { return array_diff( $plugins, array( 'wpembed' ) ); } /** * Remove all rewrite rules related to embeds. * * @since 1.2.0 * * @param array $rules WordPress rewrite rules. * @return array Rewrite rules without embeds rules. */ function disable_embeds_rewrites( $rules ) { foreach ( $rules as $rule => $rewrite ) { if ( false !== strpos( $rewrite, 'embed=true' ) ) { unset( $rules[ $rule ] ); } } return $rules; } //Remove embeds rewrite rules on plugin activation. function disable_embeds_remove_rewrite_rules() { add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' ); flush_rewrite_rules(); } register_activation_hook( __FILE__, 'disable_embeds_remove_rewrite_rules' );动静分离将 CSS / JS / 图片 等静态文件放在 CDN,可以降低源站负载,提高加载速度博客图片使用 webp 格式,推荐图床工具 PicX,图片托管在 Github 上CDN 推荐MoeCDN:全球加速域名:https://cdn.amoe.cc海外备用域名:https://cdn.vov.moeArgon 主题 CDN 加速:https://cdn.amoe.cc/web-static/public/wordpress-argon-theme/latest/FiveCDN:NPM 加速:通过代理 unpkg.com 来实现加速 使用链接如下:https://mecdn.mcserverx.com/npm/:package@:version/:file 例如:https://mecdn.mcserverx.com/npm/react@16.7.0/umd/react.production.min.jsGithub RAW 加速:速通过代理 raw.cdn.mcerverx.top(Cloudflare Workers) 来实现 使用链接如下:https://mecdn.mcserverx.com/gh/:user/:release/:tags/file 例如:https://mecdn.mcserverx.com/gh/China-Frp-Union/cfu-list/main/list.jsonWordPress 官方免费图片 CDN 加速 示例:https://i0.wp.com/static.52pojie.cn/static/image/common/logo.png 使用方法:https://i0.wp.com/自己的图片地址即可 域名切换:i0.wp.com,i1.wp.com,i2.wp.com,i3.wp.com雨云免费 CDN:https://www.rainyun.com/cdn申请教程:https://forum.rainyun.com/t/topic/2601/2支持SSL,支持自动跳转。对于雨云虚拟主机、云服务器,不仅可以免费使用雨云CDN,不限流量,而且走内部隧道,不绕路,不受攻击影响。免备案,解析至雨云CDN的域名,无需备案即可享受多区域服务。插件优化插件主题选择原则WordPress 拥有大量的优秀的的主题与插件,选择插件时应该遵循几个原则:只选有用的插件:用处不大的插件只会拖慢博客的运行速度,不需要的插件在后台禁用或删除。尽量选择正版插件,不要使用未知来源的插件同类插件不需要安装多个对于主题,也是相同的道理。如果没有必要,尽量不要使用国外的主题,因为它们可能会引用大量国外的静态资源,拖慢加载速度。国内的主题对于相应文件都会有一定优化,提升加载速度。缓存优化插件WordPress 有多种缓存机制,合理使用缓存,能让站点速度大大提升。使用 WP Rocket / WP Super Cache 等缓存插件启用 Memcached / Redis 等配合相关 Object CacheRedis Object Cache- 官网地址:https://wordpress.org/plugins/redis-cache/Github 地址:https://github.com/rhubarbgroup/redis-cache配置选项:Configuration constantDefaultDescriptionWP_REDIS_HOST127.0.0.1The hostname of the Redis serverWP_REDIS_PORT6379The port of the Redis serverWP_REDIS_PATH The path to the unix socket of the Redis serverWP_REDIS_SCHEMEtcpThe scheme used to connect: tcp or unixWP_REDIS_DATABASE0The database used by the cache: 0-15WP_REDIS_PREFIX The prefix used for all cache keys to avoid data collisions, replaces WP_CACHE_KEY_SALT. Should be human readable, not a "salt".WP_REDIS_PASSWORD The password of the Redis server. Supports Redis ACLs arrays: ['user', 'password']WP_REDIS_MAXTTL0The maximum time-to-live of cache keysWP_REDIS_CLIENT The client used to communicate with Redis: predis, phpredis or relayWP_REDIS_TIMEOUT1The connection timeout in secondsWP_REDIS_READ_TIMEOUT1The timeout in seconds when reading/writingWP_REDIS_IGNORED_GROUPS[]Groups that should not be cached between requests in Redis高级配置选项Configuration constantDefaultDescriptionWP_CACHE_KEY_SALT Deprecated. Replaced by WP_REDIS_PREFIXWP_REDIS_RETRY_INTERVAL The number of milliseconds between retriesWP_REDIS_GLOBAL_GROUPS[]Additional groups that are considered global on multisite networksWP_REDIS_METRICS_MAX_TIME3600The maximum number of seconds metrics should be storedWP_REDIS_IGBINARYfalseWhether to use the igbinary PHP extension for serializationWP_REDIS_DISABLEDfalseEmergency switch to bypass the object cache without deleting the drop-inWP_REDIS_DISABLE_ADMINBARfalseDisables admin bar displayWP_REDIS_DISABLE_METRICSfalseDisables metrics collection and displayWP_REDIS_DISABLE_BANNERSfalseDisables promotional bannersWP_REDIS_DISABLE_DROPIN_AUTOUPDATEfalseDisables the drop-in auto-updateWP_REDIS_SSL_CONTEXT[]TLS connection options for tls or rediss scheme手动安装编辑 wp-config.php,在 define( 'DB_COLLATE', ''); 后添加如下内容/** Redis Object Cache */ define('WP_REDIS_HOST', '127.0.0.1'); define('WP_REDIS_DATABASE', '0');Docker Compose 安装docker-compose.yml 文件version: '3.0' services: db: image: mysql:5.7 # arm架构的机器请将mysql:5.7改为mysql:oracle # container_name: wordpress-db restart: unless-stopped # command: --max-binlog-size=200M --expire-logs-days=2 # 使用mysql 8.0的小伙伴建议使用 environment: MYSQL_ROOT_PASSWORD: rootpassword # 按需修改 MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: yourpassword # 按需修改 volumes: - './db:/var/lib/mysql' networks: - default app: image: wordpress:latest # container_name: wordpress-app restart: unless-stopped ports: - 4145:80 # 按需修改。与防火墙开放端口一致。 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_NAME: wordpress WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: yourpassword # 按需修改 volumes: - './app:/var/www/html' links: - db:db depends_on: - redis - db networks: - default redis: image: redis:alpine # container_name: wordpress-redis restart: unless-stopped volumes: - ./redis-data:/data networks: - default networks: default: name: wordpress编辑 wp-config.php,在 define( 'DB_COLLATE', ''); 后添加如下内容/** Redis Object Cache */ define('WP_REDIS_HOST', 'redis'); define('WP_REDIS_DATABASE', '0');最后将 object-cache.php 这个文件从目录 /wp-content/plugins/redis-cache/includes/ 复制到 wp-content 下。持续更新中参考文献让你的WP跑得更快 - WordPress优化指南从能用到好用-快速搭建高性能WordPress指南Docker系列 WordPress系列 特效Docker系列 WordPress系列 搭建WordPress个人博客【END】
2023年09月02日
8 阅读
0 评论
0 点赞
2023-04-08
【WordPress】数据库详解
前言在本文中,我们将了解 WordPress 数据库是什么以及它是如何工作的。WordPress 数据库是什么我们都知道在创建 WordPress 时,需要之前就创建好一个数据库。WordPress 是一个数据库驱动的开源内容管理系统或网站平台,用 PHP 编写。WordPress 使用数据库来存储和检索您的网站或博客的内容。可以理解为 WordPress 网站是数据库的呈现形式。WordPress 使用 MySQL 数据库管理系统。MySQL 是一个开源的关系数据库管理系统 (RDBMS),通常用于创建数据库。MySQL 使用结构化查询语言 (SQL),这是一种流行的数据库语言。MySQL 最适合与 WordPress、Apache Web 服务器、Linux 操作系统和 PHP 等其他开源应用程序配合使用。大多数 WordPress 用户几乎不需要与 WordPress 数据库进行交互。它只是在幕后运作。但是,如果您对主题或插件开发或为WordPress 核心感兴趣,了解 WordPress 数据库是什么以及它是如何工作的会很有帮助。WordPress 的 MySQL 数据库将网站的数据存储到表、行和列中。WordPress 数据库是动态的,这意味着您可以添加、修改和删除其中包含的信息(前提是您具有管理权限)。WordPress 数据库结构及解释存储在 WordPress 数据库中的不同类型数据的一些示例包括:页面、帖子和其他内容标签、类别和其他组织信息用户评论和个人资料数据主题和插件相关数据全站设置WordPress 数据库描述的内容参见下图。每个全新的 WordPress 数据库安装都将包含 12 个表。表的名称让您对每个表负责存储的内容有一个非常可靠的概念。此外,每个表将包含存储更多指定数据位的各种字段和列。例如,wp_comments 表包含与您的帖子和页面上的用户评论相关的所有数据。表名描述wp\_usersWordPress 网站上的用户列表 。所有 WordPress 用户角色的用户都存储在这里(管理员、编辑、作者、贡献者、订阅者等)。存储在此表中的其他用户信息包括用户名、名字、姓氏、昵称、密码、电子邮件、注册日期、状态和角色。wp\_usermeta每个 用户 的特征信息称为 元数据。此处存储的元数据包括唯一的用户 ID、元键、元值和元 ID。这些都是您网站上用户的唯一标识符。wp\_term\_taxonomyWordPress 使用三种类型的分类法,包括类别、 链接或标签。此表存储术语的分类关联。wp\_term\_relationships此表存储帖子、类别和标签之间的关系。 与各自类别的链接的关联 也保存在此表中。wp\_termmeta每个 术语 的特征信息称为 元数据 ,它存储在 wp\_termmeta 中。wp\_terms帖子和链接的 类别 以及帖子的 标签 都可以在 wp\_terms 表中找到。wp\_postsWordPress 数据的核心是 帖子。此表存储您发布的任何帖子或页面的内容,包括自动保存修订和帖子选项设置。此外,页面 和导航菜单项存储在此表中。wp\_postmeta每个 帖子都 包含称为 元数据的信息 ,它存储在 wp\_postmeta 中。一些插件可能会将自己的信息添加到此表中。wp\_options从 WordPress 管理仪表板的设置页面设置的所有设置都存储在这里。这包括所有主题和插件选项。wp\_linkswp\_links 保存与 输入到 WordPress 的链接功能中的 **链接相关的信息。**(此功能现已弃用,但可以使用 Links Manager 插件重新启用。)wp\_comments发布到您网站的所有评论以及有关评论作者的其他信息(姓名、URL、IP 地址、电子邮件地址等)都存储在此处wp\_commentmeta每个 评论都 包含称为 元数据的信息 ,它存储在 wp\_commentmeta 中,包括评论 ID 号。WordPress 数据库表示例:评论任何 WordPress 数据库表都可以扩展以显示存储在表中的所有数据。以 wp_comments 表为例。 通过 phpMyAdmin 打开 MySQL 数据库。点击左侧数据库的 wp_comments 表,如您所见,数据库存储的有关网站上每个用户评论的信息比您想象的要多得多。它存储有关每个评论的作者详细信息、唯一用户 ID、可以在哪里找到评论等信息。WordPress 数据库表 wp_comments 进一步细分为以下列:comment_ID comment_post_ID comment_author comment_author_email comment_author_url comment_author_IP comment_date comment_date_gmt comment_content comment_karma comment_approved comment_agent comment_type comment_parent user_id具体如何操作 phpMyAdmin,详见相关阅读里的 phpMyAdmin 入门教程 和 phpMyAdmin教程 之 创建新用户/导入/导出数据库。注意:请务必谨慎操作数据库WordPress 数据库的推荐权限对于标准的 WordPress 操作,数据库用户只需要 SELECT、INSERT 和 UPDATE 权限。强烈建议在运行 WordPress 数据库时使用绝对最低权限。在重大升级期间,有时可能需要额外的权限,如 CREATE、ALTER 和 DROP。当安装需要更改数据库结构以便在您的网站上运行的插件时,也可能需要它们。在这种情况下,插件开发人员会建议您对数据库的用户权限进行此类更改。MySQL 查询及更改许多与数据库相关的 MySQL 查询将自动运行。但是,您也可以直接访问数据库并手动运行命令和查询。数据库管理器可帮助您简化流程。MySQL 查询示例:DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam'此查询将通知数据库查看与用户发表的评论相关的所有数据。它会查找并删除您已标记为垃圾邮件的所有评论。通过手动执行查询,可以更好地完成某些无法从仪表板完成的任务。您可以做一些事情,例如更改您帐户上的用户名,这是仪表板不允许的。再比如由于网站更换域名,图片外链图床改变,导致文章地址或图片地址发生改变,需要进行批量替换 url 的操作。修改 option_value 里的站点 url 和主页地址:UPDATE wp_options SET option_value = REPLACE(option_value,'替换内容','替换值');更改文章中内部链接及附件的地址:UPDATE wp_posts SET post_content = REPLACE(post_content,'替换内容','替换值');更改 WordPress 文章默认的永久链接:UPDATE wp_posts SET guid = REPLACE(guid,'替换内容','替换值');更改博客用户里你的网站链接:(如果你的个人资料里没有填你的博客地址,可忽略)UPDATE wp_users SET user_url = REPLACE(user_url,'替换内容','替换值');更改评论者资料里你的博客链接:UPDATE wp_users SET user_url = REPLACE(user_url,'替换内容','替换值');更改评论内容你的博客链接:(如果评论里没有你博客链接,可忽略)UPDATE wp_comments SET comment_content = REPLACE(comment_content,'替换内容','替换值');如何重置 WordPress 数据库有时可能希望将数据库重置为原始设置。例如,如果您在测试站点或本地服务器上工作,您可能希望将数据库恢复到进行更改之前的状态。注意:当您重置数据库时,您的所有数据将被永久删除。重置过程无法撤消。因此,在进行数据库重置之前创建完整的 WordPress 备份是个好主意。如果您不想创建整个站点的备份副本,则可以仅创建 WordPress 数据库的备份。要将数据库重置为其默认设置,您首先需要安装并激活名为WP Database Reset的插件。激活插件后,转到页面工具 > 数据库。在此位置,您可以单击以选择要重置的表。如果要重置数据库中的所有表,请单击“选择所有表”。如果您选择所有表格,您将可以选择重新激活您的活动插件和当前主题。该插件还保留您的活动 WordPress 用户帐户。在此之后,需要通过在所需文本框中输入安全代码并单击“重置表”链接来确认重置。当屏幕上出现警告弹出窗口时,单击“确定”继续。然后插件继续删除数据库表中的所有数据。该过程完成后,您会在插件的设置页面上看到“成功”消息。片刻之后,您将自动退出 WordPress 的管理区域。此时,您可以使用同一帐户再次登录。您的数据库已重置,您的网站现在显示的方式将在您刷新时反映这一点。如何修复 WordPress 数据库如果想修复数据库而不是完全重置数据库,首先要做的是打开 WordPress 主机的控制面板区域并登录您的帐户。进入后,您将在控制面板内看到主机为您提供的所有选项。像在本文前面所做的那样找到 phpMyAdmin 图标,然后单击它。对于大多数主机的控制面板,可以在“数据库”的标题下找到 phpMyAdmin。进入 phpMyAdmin 界面后,需要选择“正确的 WordPress 数据库”。执行此操作后,您会看到所有内部文件夹都将出现在侧边栏中。所有文件夹名称都以 wp\_ 开头。如果在服务器上有多个 WordPress 站点,您将在选择“更正 WordPress 数据库”时看到所有站点。在继续进行任何修复之前,请仔细检查是否选择了正确的数据库。一旦打开了正确的数据库,请确保数据库的每个部分都得到修复(当然,除非您收到的错误消息告诉您只有数据库的一个特定部分已损坏)。要修复 WordPress 数据库的所有部分,请前往底部并在主目录中选择“全部检查”。这会突出显示数据库中的所有子目录。在看到所有子目录都被选中后,打开“检查所有”字段旁边的列表。选择“修复表”选项。该过程运行后,检查它是否在修复结果屏幕上工作。在那里,它会告诉你修复是否成功。如何优化 WordPress 数据库?随着时间的推移和使用,WordPress 数据库可能会损坏或需要良好的整体管理。这就是数据库优化介入的地方。应该定期优化您的 WordPress 数据库,以使其保持清洁并保持最佳状态。如果没有定期优化,您会注意到 WordPress 网站速度会随着时间的推移而减慢。WordPress 数据库优化是一个相对简单的过程,有几种不同的方法来完成它。通过 phpMyAdmin 优化数据库第一种方法是重新登录 phpMyAdmin 并单击“数据库”。在这里,您会看到列出了要优化的数据库。同样,您将看到与您的网站数据库相关的所有表格。从那里,您需要做的就是向下滚动页面并单击“全选”。然后导航到“With Selected”下拉菜单并选择“Optimize Tables”。系统现在优化您选择的所有表格。用于数据库优化的 WordPress 插件如果希望使用插件优化 WordPress 数据库,可以使用几种不同的插件。第一个称为 WP-Optimize,可以在 WordPress 插件存储库中找到。这个插件的安装和操作都很简单。您还可以使用它在白天或晚上的任何时间安排自动优化。如何备份 WordPress 数据库强烈建议您始终使用可靠的 WordPress 备份插件如 BackupBuddy 定期备份 WordPress 数据库(每周一次是个好主意)。特别建议在执行站点升级甚至优化之前备份您的数据库。这样,如果出现问题,将能够恢复数据库(和网站)而无需任何恐慌。简单的方法:使用插件进行数据库备份到目前为止,备份 WordPress 数据库的最简单方法是使用 WordPress 备份插件 BackupBuddy。BackupBuddy 允许您轻松备份、恢复和迁移 WordPress 网站到新的服务器或域名。注:BackupBuddy 是一个收费插件。手动方法:通过 phpMyAdmin 进行数据库备份登录 phpMyAdmin。从屏幕左侧的窗口中,选择要备份的 WordPress 数据库。右侧的窗口将显示 WordPress 数据库中的所有表。需要单击顶部选项卡上的“导出”选项卡。 选择“快速”选项,然后单击“执行”下载数据库文件。如果要更改默认行为,还可以选择自定义备份选项。在上述步骤中,选择“自定义”选项而不是“快速”选项。从那里,您将看到显示的详细选项。表部分是可以从数据库中的所有不同表中进行选择的地方。如果其他程序正在使用该数据库,请仅选择与 WordPress 安装相对应的表。它们将以您已经在 wp-config.php 文件中指定的 wp\_ 或 table\_prefix 开头。如果只安装了 WordPress,请保持原样,如果选择已更改,请单击“全选”。在输出部分,从压缩框中选择“gzipped”或“zipped”。这将允许在下载数据时对其进行压缩。在格式部分中,确保选择 SQL。这将导出一系列 SQL 命令,而不是其他数据格式,例如 CSV,这不适用于此备份过程。当看到特定于格式的部分时,请继续保持原样。在对象创建部分中,选择以下内容:Drop TableViewProcedureFunctionEventTrigger在创建目标数据库之前,它会调用一个 DROP 语句来删除任何旧的现有表(如果它们存在)。在此之后,您需要确保将数据创建选项部分完全保留原样。前往窗口底部,然后单击“开始”。系统将提示下载文件。将此文件保存在您的计算机上。请记住,此过程不会备份您的所有文件和文件夹(如图像)。但是,博客文章和用户评论等所有内容都已通过此手动数据库备份过程进行备份。如何恢复 WordPress 数据库使用 BackupBuddy 恢复 WordPress 数据库恢复数据库可以在插件中执行。导航到插件中的“备份”页面,然后导航到“还原备份”选项卡。使用数据库备份右侧的按钮来恢复数据库。然后,可以观看 BackupBuddy 将数据库恢复到备份中包含的版本。通过 phpMyAdmin 恢复推荐使用 phpMyAdmin来完成恢复。登录 phpMyAdmin 平台。单击“数据库”并选择将要导入数据的数据库。您将看到一个屏幕告诉您不存在任何表或数据库中已经存在的表列表。这将取决于您如何设置。单击屏幕顶部附近的“导入”选项卡。在此屏幕上,单击“浏览”以查找存储在计算机上的数据库备份文件。仔细检查是否在标题为“格式”的下拉菜单中选择了 SQL。点击“执行”。稍等片刻,数据库就导入成功了。总结希望您现在对 WordPress 数据库有更多了解,包括创建、访问、修复、备份或优化它。记住:少折腾,多备份!相关阅读 WordPress 数据库详解(是什么,创建、备份和恢复等) 数据库描述 phpMyAdmin 入门教程 phpMyAdmin教程 之 创建新用户/导入/导出数据库【END】
2023年04月08日
12 阅读
0 评论
0 点赞
2022-12-08
【WordPress】显示时间胶囊
转载:https://www.szfx.top/wordpress/sidebar-time-capsule.html使用方法WordPress 后台 -> 外观 -> 小工具 -> 自定义 HTML, 选择你需要放的位置。<div class="time-schedule-main"> <div class="today-schedule"> <div class="mizhi-schedule-item"> <div class="today-item"> <img src="https://s4.ax1x.com/2022/02/06/HuOUv6.png"> </div> <div class="schedule-info"> <span class="schedule-tilte">今天仅剩</span> <span class="today-num">100%</span> </div> </div> </div> <div class="toweek-schedule"> <div class="mizhi-schedule-item"> <div class="toweek-item"> <img src="https://s4.ax1x.com/2022/02/06/HuOUv6.png"> </div> <div class="schedule-info"> <span class="schedule-tilte">本周还有</span> <span class="toweek-num">100%</span> </div> </div> </div> <div class="tomonth-schedule"> <div class="mizhi-schedule-item"> <div class="tomonth-item"> <img src="https://s4.ax1x.com/2022/02/06/HuOUv6.png"> </div> <div class="schedule-info"> <span class="schedule-tilte">本月剩余</span> <span class="tomonth-num">100%</span> </div> </div> </div> <div class="toyear-schedule"> <div class="mizhi-schedule-item"> <div class="toyear-item"> <img src="https://s4.ax1x.com/2022/02/06/HuOUv6.png"> </div> <div class="schedule-info"> <span class="schedule-tilte">今年还剩</span> <span class="toyear-num">100%</span> </div> </div> </div> </div>外观 -> 自定义样式<style type="text/css"> .time-schedule-main.today-schedule,.toweek-schedule,.tomonth-schedule,.toyear-schedule.mizhi-schedule-item.today-item,.toweek-item,.tomonth-item,.toyear-item.schedule-info.schedule-tilte.time-schedule-main img@-webkit-keyframes mizhi_move_wave50%100%}@keyframes mizhi_move_wave50%100%} /* 今日剩余背景颜色 */ .today-item { background-image: linear-gradient(to right, #a18cd1 0%, #fbc2eb 100%); } /* 本周剩余背景颜色 */ .toweek-item { background-image: linear-gradient(to right, #ff9a9e 0%, #fad0c4 100%); } /* 本月剩余背景颜色 */ .tomonth-item { background-image: linear-gradient(to right, #fbc2eb 0%, #a6c1ee 100%); } /* 今年剩余背景颜色 */ .toyear-item { background-image: linear-gradient(to right, #ffecd2 0%, #fcb69f 100%); } </style>自定义JS<script type="text/javascript"> $(function () { $.extend({ mizhiSchedule: function () { var a = new Date(), e = 3600 * a.getHours() + 60 * a.getMinutes() + a.getSeconds(), c = e / 86400, b = (100 - 100 * c).toFixed(1); c = (109 - 109 * c).toFixed(2); $(".today-num").text(b + "%"); $(".today-item").css("height", c + "%"); b = a.getDay(); 0 === b && (b = 7); c = (e + 86400 * (b - 1)) / 604800; b = (100 - 100 * c).toFixed(1); c = (109 - 109 * c).toFixed(2); $(".toweek-num").text(b + "%"); $(".toweek-item").css("height", c + "%"); b = a.getFullYear(); c = a.getMonth(); a = a.getDate(); var d = new Date(b, c + 1, 0).getDate(); d = (e + 86400 * (a - 1)) / (86400 * d); var f = (100 - 100 * d).toFixed(1); (109 - 109 * d).toFixed(2); $(".tomonth-num").text(f + "%"); $(".tomonth-item").css("height", f + "%"); d = 0; f = [ 31, (0 == b % 4 && 0 != b % 100) || 0 == b % 400 ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; for (var g = 0; g < c; g++) d += f[g]; a = (e + 86400 * (d + a - 1)) / (86400 * ((0 == b % 4 && 0 != b % 100) || 0 == b % 400 ? 366 : 365)); e = (100 - 100 * a).toFixed(1); a = (109 - 109 * a).toFixed(2); $(".toyear-num").text(e + "%"); $(".toyear-item").css("height", a + "%"); } }); $.mizhiSchedule(); setInterval($.mizhiSchedule, 2e3); }); </script>【END】
2022年12月08日
7 阅读
0 评论
0 点赞
1
2
...
4