🎨 后台侧边栏菜单样式优化
文件位置: assets/css/admin-flat-rounded.css
- 功能描述: 修改后台侧边栏菜单选中状态的文字颜色,从白色改为深紫色
- 核心优化点:
- 将主菜单选中状态文字颜色从白色改为深紫色
- 将子菜单选中状态文字颜色从白色改为深紫色
- 保持与主题整体风格的一致性
- 提升选中状态的视觉辨识度
- 代码修改:
- CSS样式:assets/css/admin-flat-rounded.css
- 第29行:修改主菜单选中状态样式 color:#ffffff !important 为 color:#4b0082 !important
- 第30行:修改子菜单选中状态样式 color:#ffffff !important 为 color:#4b0082 !important
- 优化效果:
- 后台侧边栏菜单选中时显示深紫色文字
- 提高了选中状态的视觉对比度
- 增强了用户操作的反馈体验
- 保持了主题的一致性设计
✍️ 写文章入口新标签页打开
文件位置: core/module/fun-admin.php · assets/js/admin-view-newtab.js
- 覆盖范围:顶部“新建→文章”、侧边“文章→写文章”、文章列表页右上角“新增文章 / Add New”
- 新标签与安全:统一添加
target="_blank"与rel="noopener noreferrer",避免后台页被覆盖与提升安全性 - 代码寻找
- Admin Bar 新建文章:wp-content/themes/lolimeow/core/module/fun-admin.php:338-346
- 后台统一新标签脚本:wp-content/themes/lolimeow/assets/js/admin-view-newtab.js:1-12
💊 药丸短代码样式修复(Bootstrap 5 兼容)
文件位置: core/module/fun-shortcode.php
- 修复原因:旧类名
badge-primary等在 Bootstrap 5 已弃用;bg-gradient-不存在,导致[ yaowan]前端样式不生效 - 修复方案:统一改用
text-bg-颜色类,并通过bg-gradient叠加实现渐变;内容输出使用wp_kses_post进行安全过滤 - 支持值:
- 1–8 纯色:primary / secondary / info / success / danger / warning / light / dark
- 9–16 渐变:在上述纯色基础上叠加 bg-gradient
- 用法示例:
- [ yaowan style='5']危险[/yaowan] → < span class="badge text-bg-danger mb-1 mt-1">危险
- [ yaowan style='9']主要[/yaowan] → < span class="badge text-bg-primary bg-gradient mb-1 mt-1">主要
- 影响范围:仅影响
[ yaowan]短代码的前端徽章渲染,不改动其它短代码寻找
🧾 代码短代码与复制修复([ precode])
文件位置: core/module/fun-shortcode.php · assets/js/boxmoe.js · assets/js/quicktags.js
- 编辑器包装清理:清理短代码内容中的
< p>/< div>/< br>等编辑器注入标签,使用shortcode_unautop转换换行并做trim,防止被当作 HTML 渲染 - 安全转义:最终以
< pre>< code>…< / code>< / pre>输出,并对内容esc_html确保纯文本显示(防 XSS/标签破坏) - 参数支持:
linenums控制是否显示行号,lang指定高亮语言(Prettify 的lang-*) - 复制纯文本:复制按钮改用
data-clipboard-text,从ol.linenums li聚合文本,自动去除行号与首尾空行 - 经典编辑器按钮:将“代码高亮”按钮改为插入短代码
[ precode]…[/precode],统一渲染路径
代码寻找
- 短代码定义与清理:
wp-content/themes/lolimeow/core/module/fun-shortcode.php:136-156 - 复制逻辑修复:
wp-content/themes/lolimeow/assets/js/boxmoe.js:590-615 - 经典按钮替换:
wp-content/themes/lolimeow/assets/js/quicktags.js:8
使用示例
- 基本:
[ precode]你的代码[/precode] - 指定语言:
[ precode lang="js"]const a=1;[/precode] - 关闭行号:
[ precode linenums="0"]...[/precode]
🧾 代码短代码深度优化([ precode] 防自动分行/粘贴清理)
文件位置: core/module/fun-shortcode.php · assets/js/tinymce-precode-paste.js · assets/js/tinymce-clear-format.js · assets/js/clear-format-quicktags.js · core/module/fun-admin.php · assets/css/style.css
- 服务端清洗:在短代码渲染阶段彻底移除编辑器注入的块级标签,将
归一化为单换行,并压缩多余空行(fun-shortcode.php:116–123) - 粘贴前拦截:TinyMCE 在粘贴含
[ precode]的内容时,自动清理内部的///
包装并归一化换行,避免将样式粘入代码块(assets/js/tinymce-precode-paste.js:1–61,注册于core/module/fun-admin.php:47–50)- 清除格式增强:可视化编辑器与文本编辑器的“清除格式”按钮同时支持标签剥离与换行归一化(
tinymce-clear-format.js:41–53、clear-format-quicktags.js:41–55)- 显示层禁止折行:对
.prettyprint及其子节点(含ol.linenums/li/code/span)统一强制white-space: pre并禁用断词,长行以水平滚动呈现(assets/css/style.css:518–522)
🔄 修复后台访问重定向循环问题
文件位置:
core/module/fun-user.php·core/module/fun-admin.php- 问题描述:部分设备访问后台链接时出现"当前无法使用此页面 - gl.baimu.live 重定向你太多次"错误(ERR_TOO_MANY_REDIRECTS)
🔹 修复方案
1. 修复登录页面重定向函数 (
boxmoe_custom_login_redirect)- 增强循环检测:添加HTTP_REFERER检查,避免从本站重定向时导致循环
- 优化redirect_to参数处理:检查redirect_to是否会导致循环,避免重定向到wp-login.php本身
- 安全重定向逻辑:确保自定义登录页面不是wp-login.php,防止循环重定向
2. 修复后台访问限制函数 (
boxmoe_restrict_admin_access)- AJAX请求排除:添加wp_doing_ajax()检查,避免影响正常的AJAX操作
- 认证页面排除:排除登录、注册和密码重置页面,确保用户可以正常认证
- 首页循环防护:添加首页检查,避免重定向循环到首页
🔹 修复效果
- 管理员可以正常访问后台
- 非管理员用户被正确重定向
- 登录页面重定向不会导致循环
- 各种边缘情况都得到了妥善处理
🔹 代码寻找
- 登录页面重定向修复:
core/module/fun-user.php:376-402 - 后台访问限制修复:
core/module/fun-admin.php:86-105
🏷️ 页面标语默认值优化
- 功能描述:将后台主题设置中"页面标语设置"的所有英文默认值改为中文
- 修改项:
- HOME → 首页
- CATEGORY → 分类
- TAG → 标签
- SEARCH → 搜索
- AUTHOR → 作者
- DATE → 日期
- ARCHIVE → 归档
- POST → 文章
- PAGE → 页面
- MY friend → 我的朋友
- user center → 会员中心- 实现方式:修改设置面板的默认值配置
- 代码寻找:
wp-content/themes/lolimeow/core/panel/settings/set-slogan.php - 影响范围:新安装主题或重置设置时,所有页面标语将默认显示中文
🚀 看板点击回到顶部功能修复
文件位置:
footer.php·assets/js/boxmoe.js- 问题描述:点击页面右下角的看板图片无法回到顶部
- 修复内容:
- HTML结构修复:修复了看板元素的HTML结构,添加了
- 包裹,确保符合HTML规范
- JavaScript优化:将直接事件监听器改为事件委托方式,增强了代码的健壮性
- 平滑滚动实现:使用window.scrollTo({ top: 0, behavior: 'smooth' })实现平滑滚动效果
- 事件处理增强:使用setTimeout确保事件冒泡完成,避免其他事件处理函数的影响代码寻找
- HTML结构修复:
footer.php(看板元素包裹) - JavaScript实现:
assets/js/boxmoe.js(initBackToTop函数)
使用步骤
- 确保后台已开启看板功能:后台 → 外观 → 盒子萌主题设置 → 基础设置 → 网页右侧看板开关
- 点击页面右下角的看板图片,页面会平滑滚动到顶部
修复效果
- 点击看板图片时,页面平滑滚动到顶部
- 保持了原有的HTML结构和CSS样式
- 增强了代码的适应性,能够处理动态生成的元素和嵌套元素的点击
🛠️ 修复erphpdown插件imagedestroy函数弃用警告
文件位置:
wp-content/plugins/erphpdown/includes/qrcode.class.php- 问题描述:intelephense报告了3处P1007弃用警告,
imagedestroy函数在PHP 8.0.0中被弃用 - 修复内容:
- 移除了第959行:
png()方法中的ImageDestroy($image);
- 移除了第974行:jpg()方法中的ImageDestroy($image);
- 移除了第1003行:image()方法中的ImageDestroy($base_image);问题原因
- 在PHP 8.0.0版本中,
imagedestroy函数被弃用 - PHP现在会自动管理图像资源的内存释放,不再需要手动调用该函数
修复效果
- ✅ 消除了所有intelephense报告的P1007弃用警告
- ✅ 代码功能保持不变,因为PHP会自动释放图像资源
- ✅ 代码更加简洁,符合现代PHP最佳实践
- ✅ 确保了插件与PHP 8.0+版本的兼容性
🛠️ Erphpdown 插件设置提示修复
文件位置:
wp-content/plugins/erphpdown/includes/init.php- 问题描述: Erphpdown 插件安装后,即使填写了所有设置,管理后台仍然一直显示 "Erphpdown插件需要先设置下哦!" 的提示信息
- 问题原因: 代码中检查的
ice_proportion_alipay选项在设置页面表单中缺失对应的输入字段,导致该选项始终为空,从而触发提示信息一直显示
- 解决方案: 在
init.php文件中添加默认值逻辑,当ice_proportion_alipay为空时,自动设置默认值为 1 并更新到数据库
- 技术实现: 修改了插件的初始化代码,添加了默认值设置逻辑:
$ice_proportion_alipay = get_option('ice_proportion_alipay'); // 设置默认值,避免一直显示提示信息 if(!$ice_proportion_alipay){ $ice_proportion_alipay = 1; // 默认1元人民币等于1个虚拟货币 update_option('ice_proportion_alipay', $ice_proportion_alipay); }- 修复效果:
- 解决了 Erphpdown 插件设置提示一直显示的问题
- 自动为缺失的设置项添加默认值
- 提升用户体验,避免不必要的提示干扰
- 确保插件正常运行,无需用户手动干预- 适用场景: 适用于所有使用 Erphpdown 插件的 WordPress 网站,特别是新安装或刚设置插件的网站
📄 文章卡片点击优化
文件位置:
page/template/blog-list.php·assets/css/style.css- 功能描述:当前文章卡片需要点击图片、标题才会跳转文章页,改为点击整个文章卡片就能跳转到文章页,同时保持现有样式层级,确保能正常选中文字和右键图片
- 解决方案:使用透明伪容器+CSS pointer-events属性的方案来实现点击整个卡片跳转的功能
- 核心特性:
- 点击整个卡片区域(除了链接和图片)可以跳转
- 可以正常点击链接
- 可以正常选中文字
- 可以正常右键图片
- 不影响原有的样式层级和视觉效果- 技术实现:
- 添加透明伪容器:在article标签内部添加一个透明的a标签,类名为
post-card-link,覆盖整个卡片区域
- 设置CSS样式:
-.post-list设置为相对定位,overflow: visible
-.post-card-link设置为绝对定位,top: 0; left: 0; right: 0; bottom: 0,z-index: 10
-.post-list-img和.post-list-content设置z-index: 20,确保它们显示在透明容器上方
-.post-list-img和.post-list-content设置pointer-events: none,让鼠标事件穿透到下层的透明容器
- 为链接和图片设置pointer-events: auto,确保它们可以正常交互
- 为文字和标签设置pointer-events: none,确保它们的鼠标事件也能穿透到下层的透明容器代码寻找:
- 文章卡片HTML结构:
page/template/blog-list.php - CSS样式规则:
assets/css/style.css
使用步骤:
- 修改
blog-list.php文件,在article标签内部添加透明伪容器 - 修改
style.css文件,添加相应的CSS样式规则 - 保存修改后,刷新页面即可看到效果
优化特性:
- 不改变原有HTML结构和样式层级
- 保持良好的用户体验
- 支持多种交互操作
- 代码简洁,易于维护
🔒 登录状态相关问题修复
📱 导航栏用户信息显示修复
文件位置:
assets/js/boxmoe.js- 问题描述:用户已登录,但访问文章页面时,导航栏上不显示用户信息,而是出现了【登录/注册】模块
- 修复内容:修改
renderLoginUI函数,移除移动端和桌面端用户面板渲染的条件判断,确保无论是否存在现有面板,都会根据当前登录状态创建正确的用户面板 - 修复效果:用户已登录时,导航栏会正确显示用户信息,不再出现登录/注册模块
📝 登录状态检查失败修复
文件位置:
core/module/fun-markdown.php- 问题描述:浏览器控制台显示错误:
boxmoe.js?ver=14.46:596 登录状态检查失败: 无效的请求 - 修复内容:将任务清单的 AJAX 对象从
ajax_object改为task_ajax_object,避免覆盖fun-basis.php中定义的完整ajax_object - 修复效果:登录状态检查不再返回错误,能够正确检查和更新用户登录状态
📄 页面显示问题修复
📖 文章页面无法正常显示修复
文件位置:
page/template/blog-single.php- 问题描述:首页能正常显示,但是文章页面和其他页面都不能正常显示
- 修复内容:删除第8-16行的错误HTML代码片段,修复HTML结构
- 修复效果:文章页面和其他页面都能正常显示
💡 技术总结
- HTML结构完整性:在模板文件中必须确保HTML结构完整和正确,否则会导致整个页面无法正常显示
- JavaScript对象命名冲突:在使用
wp_localize_script时,要注意避免不同功能模块之间的对象名冲突,否则会导致功能失效 - WordPress Nonce验证机制:在使用AJAX请求时,必须确保前后端使用相同的nonce名称和值,否则会导致验证失败
- 条件渲染逻辑健壮性:在编写条件渲染逻辑时,要确保所有情况下都能正确渲染UI,避免出现边界情况导致功能失效
📋
文件位置:
core/module/fun-shortcode.php·assets/css/style.css- 功能描述:优化
- 优化内容:
- 修正 HTML 结构,将错误的
ol标签改为正确的li标签
- 将过大的缩进效果改为只缩进一个文字
- 移除序号显示,仅保留圆形标记
- 优化虚线下划线,使其与文字缩进同步
- 添加平滑的悬停动画效果- 技术实现:
- HTML 结构修复:修改 PHP 代码,将列表项标签从
- 改为
- PHP 实现:
core/module/fun-shortcode.php第 59-71 行 - CSS 样式:
assets/css/style.css第 2528-2533 行 - 列表缩进更加紧凑美观,仅缩进一个文字
- 移除了不必要的序号,仅保留圆形标记
- 虚线下划线与文字缩进对齐,视觉效果更协调
- 悬停效果平滑自然,提升用户体验
- 保持了原有功能和整体样式的一致性
- 问题:前端代码使用了错误的nonce来源,导致服务器返回"无效的nonce"错误
- 修复:将nonce来源从
window.ajax_object.nonce改为window.task_ajax_object.nonce - 代码修改:
- 🎯 修复了"无效的nonce"错误提示
- 📝 任务状态可以正常更新
- 🔒 保持了安全验证机制
- 🔄 确保了任务状态的同步更新
- 问题根源:前端代码使用了通用的
ajax_object.nonce,但后端验证需要专门的boxmoe_task_statusnonce - 修复要点:使用
task_ajax_object.nonce替代ajax_object.nonce,确保与后端验证匹配 - 安全机制:nonce验证用于防止CSRF攻击,确保只有合法用户才能更新任务状态
- 数据流向:用户点击任务项 → 前端发送AJAX请求(带正确nonce) → 后端验证nonce → 更新文章内容 → 返回成功响应
- 前端实现:
assets/js/boxmoe.js- 处理任务状态更新的AJAX请求 - 后端实现:
core/module/fun-markdown.php- 生成任务清单HTML和处理AJAX请求 - 安全验证:
- 减少不必要的请求:仅在用户点击任务项时发送AJAX请求
- 异步处理:使用async/await确保请求不会阻塞UI
- 错误处理:完善的错误提示机制,确保用户体验
- 状态管理:添加同步状态标记,避免重复请求
- 代码可读性:添加了清晰的注释,便于后续维护
- 错误处理:完善的异常捕获机制
- 安全验证:严格的nonce验证,防止CSRF攻击
- 兼容性:考虑了各种边界情况,确保代码稳健运行
- 问题描述:在编辑文章时,点击Markdown编辑器的工具栏按钮会导致页面下移,影响编辑体验
- 解决方案:在工具栏按钮点击事件处理函数中,添加保存和恢复页面滚动位置的逻辑,防止浏览器自动滚动到文本框位置
- 具体修改:
- 优化效果:
- 技术说明:
,外部容器从改为
- 缩进优化:调整 CSS 中列表项的padding-left属性,从 15px 改为 25px,仅缩进一个文字
- 序号移除:删除计数器相关样式,移除counter-increment属性和:before伪元素的序号内容
- 下划线优化:将下划线从border-bottom改为使用:before伪元素实现,并调整其位置和宽度,使其与文字缩进同步
- 悬停动画:添加transition: all 0.3s ease-in-out属性,使悬停效果更平滑代码位置:
优化效果:
MD语法任务清单nonce验证修复
📋 问题描述
MD语法任务清单在前端交互时,点击更新任务状态会提示"无效的nonce"错误,导致任务状态无法正常更新。
💡 解决方案
修复前端代码中错误的nonce来源,使用专门为任务状态更新准备的nonce值和AJAX URL。
🔧 具体修改
1. 修复JavaScript中的nonce验证
文件位置:
assets/js/boxmoe.js// 添加nonce验证 if (window.task_ajax_object && window.task_ajax_object.nonce) { formData.append('nonce', window.task_ajax_object.nonce); } else { showNotification('更新任务状态失败: 缺少安全验证', 'error'); removeSyncingState(taskItem, currentStatus); return; } // 确保task_ajax_object存在 if (!window.task_ajax_object || !window.task_ajax_object.ajaxurl) { showNotification('更新任务状态失败: 无法获取服务器地址', 'error'); removeSyncingState(taskItem, currentStatus); return; } const response = await fetch(window.task_ajax_object.ajaxurl, { method: 'POST', credentials: 'same-origin', body: formData });✅ 修复效果
📌 技术说明
🎨 使用示例
在Markdown中使用任务清单:
- [ ] 待完成任务 - [x] 已完成任务 - [>] 进行中任务用户点击任务项时,状态会自动更新并同步到服务器,不会再出现"无效的nonce"错误。
📋 相关文件
- 后端:
wp_create_nonce('boxmoe_task_status')- 生成nonce
- 前端:window.task_ajax_object.nonce- 存储nonce
- 验证:wp_verify_nonce($_POST['nonce'], 'boxmoe_task_status')- 验证nonce🚀 性能优化
📝 代码质量
✨ Markdown编辑器优化
🔧 工具栏按钮点击优化
文件位置:
assets/js/markdown-editor.jsvar insert = function(prefix, suffix, placeholder){ var el = $ta.get(0); var start = el.selectionStart||0; var end = el.selectionEnd||start; var val = $ta.val(); var sel = val.substring(start,end)|| (placeholder||''); var out = val.substring(0,start)+prefix+sel+suffix+val.substring(end); $ta.val(out); // 保存当前滚动位置 var scrollTop = $(window).scrollTop(); el.focus(); el.selectionStart = start+prefix.length; el.selectionEnd = start+prefix.length+sel.length; // 恢复滚动位置,防止页面下移 $(window).scrollTop(scrollTop); };- ✅ 点击工具栏按钮时,页面不会再发生不必要的下移
- ✅ 保持在原位置,提升了编辑体验
- ✅ 不影响工具栏按钮的正常功能
- ✅ 代码简洁高效,没有引入额外依赖- 在调用
el.focus()前保存当前滚动位置
- 调用el.focus()和设置选区后,恢复之前保存的滚动位置
- 使用$(window).scrollTop()方法获取和设置页面滚动位置
- 确保了编辑体验的流畅性,提升了用户体验
上一次更新已经跑远惹✨ 计算中...(‾◡◝) 本内容里的一些消息,可能已经跟不上时间啦~感谢您的支持
微信扫一扫
支付宝扫一扫
- 清除格式增强:可视化编辑器与文本编辑器的“清除格式”按钮同时支持标签剥离与换行归一化(
评论(2)