「盒子萌Lolimeow」主题二创「纸鸢版🕊️更新」与「🗼开发笔记」
📄 修复语法在前端不渲染
文件位置: page/template/blog-single.php · assets/css/style.css
- 功能描述: 修复了文章分页语法在前端不显示的问题,添加了分页链接样式
- 实现要点:
- 在文章内容后添加了 wp_link_pages() 函数,用于渲染分页链接
- 自定义了分页链接的样式,包括普通页码、当前页码和悬停效果
- 适配了亮色和暗色模式
- 分页函数添加:page/template/blog-single.php:61-68
- 样式定义:assets/css/style.css:51-165
使用步骤:
- 在文章编辑页使用
< !--nextpage--> 标签分割文章
- 发布后,前端文章页会自动显示分页导航
🎭 修复飞来模块语法渲染问题
文件位置: functions.php · assets/js/boxmoe.js
- 功能描述: 修复了
内容段
语法在前端无法渲染的问题
- 实现要点:
- 加载了 Animate.css 和 WOW.js 库,提供动画支持
- 初始化了 WOW.js,启用滚动触发动画
- 确保动画效果在页面加载时自动初始化
- 库加载:functions.php:79-94
- 初始化函数:assets/js/boxmoe.js:1285-1290
- 初始化调用:assets/js/boxmoe.js:2500
使用步骤:
- 在文章中插入
< div class="link-title wow rollIn">内容段
语法
发布后,前端会显示滚动触发的动画效果
🎨 文章页分页按钮美化
文件位置: assets/css/style.css · page/template/blog-single.php
- 功能描述: 美化了文章页面的分页按钮,使其与主题风格一致
- 实现要点:
- 移除了额外的 span 标签,简化了HTML结构
- 采用了简洁的紫色主题设计
- 为普通页码、当前页码和悬停效果添加了独立样式
- 确保样式只影响分页导航,不影响其他元素
- 分页函数优化:page/template/blog-single.php:61-68
- 样式定义:assets/css/style.css:51-214
使用步骤:
- 在文章编辑页使用
< !--nextpage--> 标签分割文章
- 发布后,前端文章页会显示美化后的分页导航
优化特性:
- 普通页码:白色背景 + 浅灰色边框 + 灰色文字
- 当前页码:紫色背景 + 紫色边框 + 纯白色文字
- 悬停效果:紫色背景 + 白色文字 + 轻微上浮和阴影
- 适配亮色和暗色模式
- 无多重颜色层,简洁设计
🖼️ 修复Markdown编辑器图片按钮功能
文件位置: assets/js/markdown-editor.js
- 功能描述: 修复了Markdown编辑器中添加图片的问题,使其像原版主题编辑器一样以图片形式呈现
- 实现要点:
- 将图片按钮的点击事件从触发自定义图片弹窗,改为直接插入标准Markdown图片语法 ! alt
- 确保用户点击图片按钮时,能直接在编辑器中插入正确的Markdown图片语法
- 保持与原版主题编辑器一致的图片处理方式
- 图片按钮事件修改:assets/js/markdown-editor.js:36
🔒 WordPress登录页面样式同步与修复
文件位置: functions.php
- 功能描述: 将WordPress默认登录页面样式同步为用户登录页面样式,并修复登录后无法重定向的问题
- 实现要点:
- 完全替换WordPress默认登录页面的HTML结构和CSS样式
- 采用玻璃拟态卡片设计、浮动标签输入框、按钮扫光动画等美化效果
- 确保只有GET请求显示自定义页面,POST请求由WordPress正常处理登录逻辑
- 添加测试cookie设置,确保登录成功后能正确重定向
- 实现登录错误信息显示,支持多种错误类型
- 保留登录失败时的用户名,提升用户体验
- 适配亮色和暗色模式
- 支持从wp-admin跳转登录后自动返回原页面
- 自定义登录页面函数:functions.php:604-1059
- 请求方法判断:functions.php:612-613
- 测试cookie设置:functions.php:619-620
- 错误信息处理:functions.php:622-646
- 登录表单优化:functions.php:916-924
🖼️ 修复自定义背景装饰图与SVG文件支持
文件位置: header.php · functions.php · .htaccess · core/panel/includes/class-options-media-uploader.php · core/panel/js/media-uploader.js
- 功能描述: 修复了自定义背景装饰图无法加载的问题,增强了SVG文件支持,确保SVG资源能正常访问
- 实现要点:
- 修复背景图路径: 将错误的相对路径 ../assets/images/background.svg 改为正确的绝对路径 /assets/images/background.svg
- 增强SVG支持: 添加了完整的SVG文件支持代码,包括MIME类型配置、安全检查修复、HTTP头设置等
- 优化媒体上传器: 修复了媒体上传器中SVG文件的识别和预览问题
- 添加URL有效性检查: 当外部SVG文件不可用时,自动回退到本地默认SVG文件
- 配置服务器支持: 在.htaccess中添加了明确的SVG MIME类型和直接访问规则
- 背景图路径修复:header.php:23
- SVG支持代码:functions.php:69-142
- .htaccess配置:.htaccess:2-13
- 媒体上传器修复:class-options-media-uploader.php:87 · media-uploader.js:43
- URL有效性检查:header.php:26-33
使用步骤:
- 后台 → 外观 → 盒子萌主题设置 → 基础设置 → 自定义背景装饰图
- 点击“上传”或“替换”按钮上传自定义背景图(支持SVG格式)
- 保存设置后,前台背景装饰图将正常显示
- 若使用外部SVG文件且不可访问,系统会自动回退到本地默认SVG文件
优化特性:
- 支持本地和外部SVG文件
- 外部SVG文件404时自动回退到本地默认文件
- 媒体上传器中SVG文件可正确识别和预览
- 服务器级别的SVG文件支持配置
- 完善的错误处理机制
- 适配亮色和暗色模式
🔧 修复主题安装新版本时新建文件夹的问题
文件位置: style.css
问题描述
每次安装新版本主题时,WordPress会在服务器中新建文件夹,而不是替换原有主题,导致服务器中出现多个主题文件夹。
修复原因
主题的style.css文件缺少Text Domain声明,这是WordPress识别主题唯一性的重要标志。由于缺少这个标识,每次安装新版本主题时,WordPress无法识别这是同一个主题的更新,而是将其视为一个全新的主题,因此会在服务器中新建文件夹。
修复内容
在style.css文件中添加了Text Domain: lolimeow-shiroki声明,确保WordPress能够正确识别主题的唯一性。
修复原理
WordPress通过主题的Text Domain来识别主题的唯一性。当安装主题时,WordPress会检查是否已经存在具有相同Text Domain的主题,如果存在,则会替换原有主题文件;如果不存在,则会新建文件夹。
修复前后对比
- 修复前: 安装新版本主题时,服务器中会出现多个主题文件夹,如
lolimeow-shiroki、lolimeow-shiroki-1、lolimeow-shiroki-2等
- 修复后: 安装新版本主题时,WordPress会直接替换原有主题文件夹中的文件,不会新建文件夹
技术要点
- Text Domain: 主题的唯一标识符,必须在
style.css文件中声明
- WordPress主题安装机制: 通过
Text Domain判断是否为同一主题
- 主题更新流程: 保持
Text Domain不变,只更新主题版本号
修复代码:
Text Domain: lolimeow-shiroki
📊 修复用户信息小部件文章和评论数量显示问题
文件位置: core/widgets/widget-currentuser.php · core/widgets/widget-userinfo.php
- 功能描述: 修复了用户信息小部件的文章数量和评论数量显示问题,确保显示的数据与指定用户或当前登录用户一致
- 实现要点:
- 当前用户信息小部件: 显示当前登录用户的文章数量和评论数量
- 自定义用户信息小部件: 当设置了用户ID时显示该用户的真实数据,否则保持原有逻辑
- 统一数据格式化: 为文章数量和评论数量添加了format_number()格式化处理
- 使用WordPress原生函数: 采用count_user_posts()和get_comments()函数获取准确的用户数据
- 当前用户信息小部件修复:core/widgets/widget-currentuser.php:120-139
- 自定义用户信息小部件修复:core/widgets/widget-userinfo.php:140-159
- 格式化函数:两个文件中均为format_number()方法
修复前后对比:
- 当前用户信息小部件:显示全站文章总数和管理员评论数量
- 自定义用户信息小部件:显示全站文章总数和管理员评论数量
- 当前用户信息小部件:显示当前登录用户的文章数量和评论数量
- 自定义用户信息小部件:
- 当设置了用户ID时,显示该用户的文章数量和评论数量
- 当未设置用户ID时,保持显示全站文章总数和管理员评论数量
技术要点:
- count_user_posts(): WordPress原生函数,用于获取指定用户的文章数量
- get_comments(): WordPress原生函数,用于获取评论数据,支持按用户ID筛选
- 条件判断: 根据是否设置用户ID动态切换数据来源
- 数据格式化: 统一使用
format_number()函数,确保数据显示格式一致
使用步骤:
无需特殊操作,修复后小部件会自动显示正确的数据。
- 当前用户信息小部件: 登录后自动显示当前用户的文章和评论数量
- 自定义用户信息小部件:
- 在后台小部件设置中填写用户ID
- 保存后,前端会显示该用户的真实文章和评论数量
优化特性:
- 数据准确:显示的文章和评论数量与用户实际数据一致
- 动态适应:根据配置自动切换数据来源
- 格式统一:所有数据都经过格式化处理,显示效果一致
- 保持兼容:未设置用户ID时保持原有逻辑不变
🎯 修复Banner欢迎语重复显示bug
文件位置: assets/js/boxmoe.js
- 功能描述: 修复了Banner欢迎语在某些情况下重复显示的问题,确保打字动画只执行一次
- 实现要点:
- 添加执行状态标记: 新增全局变量bannerAnimationRunning,用于标记动画是否正在运行
- 防止重复执行: 在动画初始化前检查状态,避免动画被多次触发
- 状态重置机制: 当动画初始化失败时,重置状态标记,确保容错性
- 保持原有功能: 不影响动画的原有效果和逻辑
- 状态标记定义:assets/js/boxmoe.js:2627
- 状态检查逻辑:assets/js/boxmoe.js:2630-2631
- 容错处理:assets/js/boxmoe.js:2634-2642
修复前后对比:
- 修复前: 当DOMContentLoaded事件被多次触发时,Banner欢迎语会重复显示,导致多个打字动画同时运行
- 修复后: 无论DOMContentLoaded事件被触发多少次,Banner欢迎语打字动画只执行一次
技术要点:
- 全局状态管理: 使用全局变量记录动画执行状态
- 事件防抖: 防止同一事件多次触发导致的重复执行
- 容错设计: 确保初始化失败时状态能正确重置
- DOM事件处理: 正确处理DOMContentLoaded事件的多次触发情况
使用步骤:
无需特殊操作,修复后Banner欢迎语会自动正确显示,不会出现重复问题。
- 访问网站首页,Banner区域会显示欢迎语打字动画
- 无论页面如何刷新或DOM事件如何触发,动画只会执行一次
- 动画仍保持原有的彩虹配色、打字效果和循环逻辑
优化特性:
- 动画只执行一次,避免视觉混乱
- 保持原有动画效果不变
- 增强了代码的健壮性和容错性
- 解决了DOM事件多次触发导致的问题
📝 复制带版权功能
文件位置: core/panel/settings/set-artice.php · functions.php
- 功能描述: 新增复制带版权功能,当用户复制网站内容时,自动在复制内容后添加版权信息
- 实现要点:
- 主题设置开关: 在文章设置中添加"复制带版权开关",允许用户开启或关闭此功能
- 动态博客名称: 使用get_bloginfo('name')获取博客名称,使版权信息更加个性化
- 智能触发: 仅在用户真正复制内容时触发,避免空选或误操作
- 标准API: 使用标准的clipboardData API,兼容所有现代浏览器
- 美观格式: 版权信息与复制内容之间空两行,提升可读性
- 设置开关添加:core/panel/settings/set-artice.php:156-162
- 功能实现:functions.php:1233-1261
使用步骤:
- 后台 → 外观 → 盒子萌主题设置 → 文章设置
- 找到"复制带版权开关"选项,开启或关闭此功能
- 保存设置后,前端网站会根据设置自动启用或禁用复制带版权功能
实现效果:
当用户复制网站内容时,会自动在复制内容后添加以下格式的版权信息:
原文出自[您的博客名称] 转载请保留原文链接: [文章URL]
优化特性:
- 与主题设置无缝集成,可随时开启或关闭
- 智能识别用户复制操作,避免不必要的触发
- 使用主题统一的设置API,确保兼容性
- 美观的版权信息格式,提升用户体验
- 兼容所有现代浏览器
🔧 修复主题更新时侧边栏和底部内容偶然丢失bug
文件位置: core/module/fun-basis.php
- 功能描述: 修复了主题更新时侧边栏和底部内容偶然丢失的问题,确保侧边栏始终能正确注册和显示
- 实现要点:
- 移除条件判断: 将侧边栏注册的条件判断 if(get_boxmoe('boxmoe_blog_layout') == 'two') 移除
- 始终注册侧边栏: 修改为无论当前布局设置如何,都始终注册所有侧边栏
- 确保主题选项数据不可用时的兼容性: 避免主题更新时主题选项数据暂时不可用导致侧边栏无法注册
- 保持原有功能不变: 侧边栏的显示与否仍由模板文件中的条件判断控制
- 侧边栏注册逻辑修复:core/module/fun-basis.php:324-342
修复前后对比:
- 修复前: 侧边栏注册依赖于
get_boxmoe('boxmoe_blog_layout') == 'two' 条件,当主题更新时主题选项数据暂时不可用,导致侧边栏无法注册,内容丢失
- 修复后: 始终注册所有侧边栏,确保主题更新时侧边栏和底部内容不会丢失,侧边栏显示与否仍由模板文件控制
技术要点:
- 侧边栏注册时机: 主题初始化时无条件注册所有侧边栏
- 主题选项数据依赖: 避免核心功能依赖可能暂时不可用的主题选项数据
- 向后兼容: 保持原有功能逻辑不变,只修改注册时机
- 模板控制显示: 侧边栏显示仍由模板文件中的条件判断控制
使用步骤:
无需特殊操作,修复后主题更新时侧边栏和底部内容会自动保持正常显示。
- 正常更新主题
- 主题更新后,侧边栏和底部内容不会丢失
- 侧边栏显示仍由后台主题设置中的布局设置控制
优化特性:
- 提高了主题更新时的稳定性
- 避免了主题选项数据暂时不可用导致的内容丢失
- 保持了原有的侧边栏显示逻辑
- 增强了主题的容错能力
- 无需用户额外配置
🎯 修复文章列表快速编辑状态下拉框无法点击bug
文件位置: assets/js/admin-select-ui.js
- 功能描述: 修复了文章列表快速编辑时状态下拉框无法点击的问题,确保快速编辑面板中的选择器能正常工作
- 实现要点:
- 在自定义Select模拟器中添加了排除规则,跳过快速编辑面板中的选择器
- 排除了name为post_status的选择器(快速编辑中的状态选择器)
- 排除了所有.inline-edit-row内的选择器(所有快速编辑行中的选择器)
- 确保自定义Select模拟器不会干扰WordPress原生快速编辑功能
- 排除规则添加:assets/js/admin-select-ui.js:20-21
修复前后对比:
- 修复前: 文章列表快速编辑时,状态下拉框被自定义Select模拟器覆盖,无法点击选择
- 修复后: 快速编辑面板中的所有选择器保持原生状态,可正常点击和选择
技术要点:
- 选择器排除机制: 使用jQuery选择器判断,确保特定区域的选择器不受影响
- WordPress兼容性: 确保主题自定义功能不干扰WordPress核心功能
- 动态元素处理: 考虑到快速编辑面板是动态生成的,确保排除规则能正确应用
使用步骤:
无需特殊操作,修复后快速编辑功能会自动恢复正常。
- 进入WordPress后台 → 文章 → 所有文章
- 鼠标悬停在任意文章上,点击"快速编辑"链接
- 在弹出的快速编辑面板中,状态下拉框可正常点击和选择
- 其他快速编辑功能也保持正常
📱 移动端菜单栏logo大小优化
文件位置: assets/css/style.css
- 优化内容: 将移动端侧边栏logo尺寸从116px×36px调整为80px×24px
- 实现方式: 添加了响应式媒体查询,确保仅在移动端(max-width: 991px)应用较小尺寸
- 保持了桌面端logo尺寸不变,确保了响应式设计的一致性
- 优化效果: 移动端侧边栏logo大小更适合屏幕比例,避免了logo过大导致菜单布局拥挤的问题
代码实现:
.boxmoe_header .navbar-brand img {width:116px;height:36px;object-fit:contain;}
/* 📱 移动端侧边栏Logo优化 */
@media (max-width: 991px) {
.boxmoe_header .offcanvas-header img {
width: 80px;
height: 24px;
object-fit: contain;
}
}
👤 移动端用户按钮下拉菜单修复
文件位置:
header.php
assets/js/boxmoe.js
功能描述:
- 修复了移动端用户按钮下拉菜单功能,确保已登录用户点击时显示包含会员中心、后台管理(仅管理员)、注销登录的下拉菜单
- 为未登录用户添加了下拉菜单,显示登录、注册选项
- 修复了登录状态检测不准确的问题
实现要点:
- 登录状态检测优化:
- 在 header.php 中添加了明确的登录状态元数据
- 使用 PHP 的 is_user_logged_in() 函数直接输出登录状态,确保准确性
- 在 JavaScript 中优先使用此元数据进行登录状态判断
- 下拉菜单功能:
- 已登录用户:显示会员中心、后台管理(仅管理员)、注销登录选项
- 未登录用户:显示登录、注册选项
- 平滑的显示/隐藏动画效果
- 点击外部或按ESC键可关闭菜单
- 完美适配亮色和暗色模式
- 技术实现:
- 动态创建和渲染下拉菜单
- 智能检测管理员权限
- 多重链接获取机制确保兼容性
- 流畅的CSS过渡动画
- 完善的事件处理机制
代码实现:
在 header.php 中添加:
<!-- 🎯 页面元数据:登录状态 -->
<meta name="logged-in" content="<?php echo is_user_logged_in() ? 'true' : 'false'; ?>">
在 assets/js/boxmoe.js 中优化登录状态检测:
// 最可靠的登录状态检测:使用header中添加的元数据
const isLoggedIn = () => {
// 1. 优先使用header中添加的明确登录状态元数据(PHP直接输出,最可靠)
const loggedInMeta = document.querySelector('meta[name="logged-in"]');
if (loggedInMeta) {
return loggedInMeta.content === 'true';
}
// 2. 次优选择:检查WordPress的body类名
if (document.body.classList.contains('logged-in')) {
return true;
}
// 3. 检查是否存在移动端登录用户包装器
const mobileLoggedWrapper = document.querySelector('.mobile-logged-user-wrapper');
if (mobileLoggedWrapper) {
return true;
}
// 以上都不满足,视为未登录
return false;
};
修复效果:
✅ 已登录用户点击移动端用户按钮 → 正确显示包含会员中心、后台管理(仅管理员)、注销登录的下拉菜单
✅ 未登录用户点击移动端用户按钮 → 正确显示包含登录、注册的下拉菜单
✅ 彻底解决了已登录状态误判为未登录的问题
✅ 修复了下拉菜单显示错误的问题
✅ 完美适配亮色和暗色模式
评论(2)