🧾 代码短代码深度优化([ 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()方法获取和设置页面滚动位置
- 确保了编辑体验的流畅性,提升了用户体验
🔘 短代码按钮样式优化
文件位置:
assets/css/style.css.single-content .download_btn:before, .single-content .links_btn:before { font-family: 'FontAwesome'; margin-right: 8px; font-size: 14px; line-height: 1; display: inline-block; vertical-align: middle; }/* 🚫 短代码按钮不显示链接下划线 */ .single-content .download_btn, .single-content .links_btn { padding: 8px 16px !important; } /* 🚫 确保短代码按钮不显示圆角下划线 */ .single-content .download_btn::before, .single-content .links_btn::before { background: none !important; height: auto !important; position: static !important; border-radius: 0 !important; }/* ✨ 确保按钮悬停时图标保持可见 */ .single-content .download_btn:hover::before, .single-content .links_btn:hover::before { opacity: 1 !important; display: inline-block !important; }优化效果:
感谢您的支持
微信扫一扫
支付宝扫一扫
- 清除格式增强:可视化编辑器与文本编辑器的“清除格式”按钮同时支持标签剥离与换行归一化(

评论(2)