0%
boxmoe_header_banner_img

加载中

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


avatar
白木 2025年8月27日 2026年2月13日 1.61k

🧾 代码短代码深度优化([ 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–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结构,添加了

  • 包裹,确保符合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 代码,将列表项标签从

      改为

    1. ,外部容器从
        改为


          - 缩进优化:调整 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()方法获取和设置页面滚动位置
          - 确保了编辑体验的流畅性,提升了用户体验

           
           
           
           

          🔘 短代码按钮样式优化

          文件位置: assets/css/style.css

          • 修复图标下移:调整 [ downloadbtn] 按钮图标的垂直对齐方式,确保图标与文字居中对齐
          .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)

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

    发表评论

    表情 颜文字
    插入代码

    北京时间 (Asia/Shanghai)

    后退
    前进
    刷新
    复制
    粘贴
    全选
    删除
    返回首页
    0%
    目录
    顶部
    底部
    📖 文章导读