boxmoe_header_banner_img

加载中

「盒子萌Lolimeow」主题二创「纸鸢版🕊️更新」与「🗼开发笔记」


avatar
白木 2025年8月27日 2026年7月24日 4.81k

🎨 后台侧边栏菜单样式优化

文件位置: assets/css/admin-flat-rounded.css
  • 功能描述: 修改后台侧边栏菜单选中状态的文字颜色,从白色改为深紫色
  • 核心优化点
– 将主菜单选中状态文字颜色从白色改为深紫色 – 将子菜单选中状态文字颜色从白色改为深紫色 – 保持与主题整体风格的一致性 – 提升选中状态的视觉辨识度
  • 代码修改
– CSS样式:assets/css/admin-flat-rounded.css – 第29行:修改主菜单选中状态样式 color:#ffffff !importantcolor:#4b0082 !important – 第30行:修改子菜单选中状态样式 color:#ffffff !importantcolor:#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 / dark9–16 渐变:在上述纯色基础上叠加 bg-gradient
  • 用法示例
[ yaowan style='5']危险[/yaowan]< span class="badge text-bg-danger mb-1 mt-1">危险</span>[ yaowan style='9']主要[/yaowan]< span class="badge text-bg-primary bg-gradient mb-1 mt-1">主要</span>
  • 影响范围:仅影响 [ 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] 的内容时,自动清理内部的
<div>

/<p>/<span>/
包装并归一化换行,避免将样式粘入代码块(assets/js/tinymce-precode-paste.js:1–61,注册于 core/module/fun-admin.php:47–50

  • 清除格式增强:可视化编辑器与文本编辑器的“清除格式”按钮同时支持标签剥离与换行归一化(tinymce-clear-format.js:41–53clear-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结构,添加了<li>包裹,确保符合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
使用步骤
  1. 修改blog-list.php文件,在article标签内部添加透明伪容器
  2. 修改style.css文件,添加相应的CSS样式规则
  3. 保存修改后,刷新页面即可看到效果
优化特性
  • 不改变原有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结构
  • 修复效果:文章页面和其他页面都能正常显示
💡 技术总结
  1. HTML结构完整性:在模板文件中必须确保HTML结构完整和正确,否则会导致整个页面无法正常显示
  2. JavaScript对象命名冲突:在使用 wp_localize_script 时,要注意避免不同功能模块之间的对象名冲突,否则会导致功能失效
  3. WordPress Nonce验证机制:在使用AJAX请求时,必须确保前后端使用相同的nonce名称和值,否则会导致验证失败
  4. 条件渲染逻辑健壮性:在编写条件渲染逻辑时,要确保所有情况下都能正确渲染UI,避免出现边界情况导致功能失效

       

📋
短代码优化

文件位置: core/module/fun-shortcode.php · assets/css/style.css

  • 功能描述:优化
    短代码的样式,包括缩进、序号、下划线对齐和悬停效果
  • 优化内容
– 修正 HTML 结构,将错误的 ol 标签改为正确的 li 标签 – 将过大的缩进效果改为只缩进一个文字 – 移除序号显示,仅保留圆形标记 – 优化虚线下划线,使其与文字缩进同步 – 添加平滑的悬停动画效果
  • 技术实现
HTML 结构修复:修改 PHP 代码,将列表项标签从 <ol> 改为 <li>,外部容器从 <ul> 改为 <ol>缩进优化:调整 CSS 中列表项的 padding-left 属性,从 15px 改为 25px,仅缩进一个文字 – 序号移除:删除计数器相关样式,移除 counter-increment 属性和 :before 伪元素的序号内容 – 下划线优化:将下划线从 border-bottom 改为使用 :before 伪元素实现,并调整其位置和宽度,使其与文字缩进同步 – 悬停动画:添加 transition: all 0.3s ease-in-out 属性,使悬停效果更平滑

代码位置

  • PHP 实现:core/module/fun-shortcode.php 第 59-71 行
  • CSS 样式:assets/css/style.css 第 2528-2533 行
优化效果
  • 列表缩进更加紧凑美观,仅缩进一个文字
  • 移除了不必要的序号,仅保留圆形标记
  • 虚线下划线与文字缩进对齐,视觉效果更协调
  • 悬停效果平滑自然,提升用户体验
  • 保持了原有功能和整体样式的一致性
       

MD语法任务清单nonce验证修复

📋 问题描述

MD语法任务清单在前端交互时,点击更新任务状态会提示”无效的nonce”错误,导致任务状态无法正常更新。

💡 解决方案

修复前端代码中错误的nonce来源,使用专门为任务状态更新准备的nonce值和AJAX URL。

🔧 具体修改

1. 修复JavaScript中的nonce验证

文件位置: assets/js/boxmoe.js
  • 问题:前端代码使用了错误的nonce来源,导致服务器返回”无效的nonce”错误
  • 修复:将nonce来源从window.ajax_object.nonce改为window.task_ajax_object.nonce
  • 代码修改
// 添加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
});

✅ 修复效果

  • 🎯 修复了”无效的nonce”错误提示
  • 📝 任务状态可以正常更新
  • 🔒 保持了安全验证机制
  • 🔄 确保了任务状态的同步更新

📌 技术说明

  1. 问题根源:前端代码使用了通用的ajax_object.nonce,但后端验证需要专门的boxmoe_task_status nonce
  2. 修复要点:使用task_ajax_object.nonce替代ajax_object.nonce,确保与后端验证匹配
  3. 安全机制:nonce验证用于防止CSRF攻击,确保只有合法用户才能更新任务状态
  4. 数据流向:用户点击任务项 → 前端发送AJAX请求(带正确nonce) → 后端验证nonce → 更新文章内容 → 返回成功响应

🎨 使用示例

在Markdown中使用任务清单:

- [ ] 待完成任务
- [x] 已完成任务
- [>] 进行中任务

用户点击任务项时,状态会自动更新并同步到服务器,不会再出现”无效的nonce”错误。

📋 相关文件

  • 前端实现assets/js/boxmoe.js – 处理任务状态更新的AJAX请求
  • 后端实现core/module/fun-markdown.php – 生成任务清单HTML和处理AJAX请求
  • 安全验证
– 后端:wp_create_nonce('boxmoe_task_status') – 生成nonce – 前端:window.task_ajax_object.nonce – 存储nonce – 验证:wp_verify_nonce($_POST['nonce'], 'boxmoe_task_status') – 验证nonce

🚀 性能优化

  • 减少不必要的请求:仅在用户点击任务项时发送AJAX请求
  • 异步处理:使用async/await确保请求不会阻塞UI
  • 错误处理:完善的错误提示机制,确保用户体验
  • 状态管理:添加同步状态标记,避免重复请求

📝 代码质量

  • 代码可读性:添加了清晰的注释,便于后续维护
  • 错误处理:完善的异常捕获机制
  • 安全验证:严格的nonce验证,防止CSRF攻击
  • 兼容性:考虑了各种边界情况,确保代码稳健运行
       

✨ Markdown编辑器优化

🔧 工具栏按钮点击优化

文件位置: assets/js/markdown-editor.js
  • 问题描述:在编辑文章时,点击Markdown编辑器的工具栏按钮会导致页面下移,影响编辑体验
  • 解决方案:在工具栏按钮点击事件处理函数中,添加保存和恢复页面滚动位置的逻辑,防止浏览器自动滚动到文本框位置
  • 具体修改
var 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)

查看评论列表
评论头像
小笨蛋 2026年01月13日
赞!
评论头像
小笨蛋 2026年01月13日
不错不错ツ

发表评论

表情 颜文字
插入代码
后退
前进
刷新
复制
粘贴
全选
删除
返回首页
0%
目录
顶部
底部
📖 文章导读