boxmoe_header_banner_img

加载中

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


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

🌸 自定义后台主题UI色

配色方案调整

  • 原始配色:粉色系渐变
  • 新配色:半透明黑色渐变灰白色
  • 渐变方案
– 黑色渐变:rgba(0, 0, 0, 0.7) → rgba(102, 102, 102, 0.8) – 灰色渐变:rgba(245, 245, 245, 0.95) → rgba(208, 208, 208, 0.85)

CSS变量系统搭建

  • 创建变量文件assets/css/admin/admin-shiroki.css
  • 定义变量类型
– 粉色系:--shiroki-pink-light, --shiroki-pink-medium, --shiroki-pink-dark, --shiroki-pink-deep – 灰色系:--shiroki-gray-light, --shiroki-gray-medium, --shiroki-gray-dark – 黑色系:--shiroki-black-light, --shiroki-black-medium, --shiroki-black-dark – 白色系:--shiroki-white – 渐变定义:--shiroki-gradient-pink, --shiroki-gradient-gray, --shiroki-gradient-black等 – 阴影:--shiroki-shadow-pink, --shiroki-shadow-black

文件修改清单

变量文件
  • 文件assets/css/admin/admin-shiroki.css
  • 功能:定义所有CSS变量,实现配色集中管理
后台样式文件
  • 文件assets/css/admin-flat-rounded.css
  • 修改
– 引入变量文件:@import url('admin/admin-shiroki.css'); – 替换所有硬编码颜色为CSS变量 – 调整顶部管理栏、侧边栏、按钮、表格等样式 – 同步媒体按钮区域与Markdown工具栏背景色
Markdown编辑器样式
  • 文件assets/css/markdown-editor.css
  • 修改
– 引入变量文件:@import url('admin/admin-shiroki.css'); – 替换所有硬编码颜色为CSS变量 – 调整工具栏、按钮、预览区域等样式
视觉一致性优化
  • 同步区域
– Markdown工具栏 (boxmoe-md-toolbar) – 媒体按钮区域 (#wp-content-media-buttons) – 短代码选择器 (boxmoe-md-shortcodes)
  • 统一样式:使用相同的半透明灰色渐变背景
技术亮点
  • 模块化:通过CSS变量实现配色集中管理
  • 可维护性:修改配色只需更新变量文件
  • 一致性:确保整个后台界面视觉统一
  • 响应式:半透明渐变适配不同背景

       

🔠 修复编辑页面,工具栏滚动页面不固定问题

问题描述

  • 编辑页面的三个工具栏(添加媒体工具栏、MD语法工具栏、WordPress默认工具栏)在滚动页面时不固定在顶部
  • 工具栏之间存在重叠问题,影响编辑体验
解决方案
  • 移除 .quicktags-toolbar#ed_toolbaroverflow: hidden 属性,使 position: sticky 生效
  • 调整三个工具栏的 top 值和 z-index 值,确保按正确顺序排列且不重叠
  • 修复工具栏的层级关系,确保第二个工具栏(MD语法工具栏)不被第三个工具栏(WordPress默认工具栏)盖住
具体修改
  1. 第一个工具栏(#wp-content-media-buttons)
– position: sticky !important – top: 0 !important – z-index: 1003 !important
  1. 第二个工具栏(.boxmoe-md-toolbar)
– position: sticky !important – top: 48px !important – z-index: 1002 !important
  1. 第三个工具栏(#ed_toolbar, .quicktags-toolbar)
– position: sticky !important – top: 144px !important – z-index: 1001 !important

修复效果

  • 工具栏现在会正确固定在页面顶部,不随页面滚动而消失
  • 三个工具栏按正确顺序排列,不会相互重叠
  • 编辑体验得到改善,工具栏操作更加方便
技术原理
  • 使用 position: sticky 使工具栏在滚动时固定在指定位置
  • 通过设置不同的 top 值确保工具栏垂直排列
  • 使用不同的 z-index 值确保工具栏按正确层级显示
  • 移除 overflow: hidden 属性,确保 position: sticky 能够正常工作
       

🏄🏻‍♀️ 优化搜索引擎抓取及文章封面和作者头像显示问题

       

🚀 优化文章导读按钮

功能概述

将原有的文章导读按钮升级为 SVG 圆形阅读进度指示器,并添加轮盘展开式菜单风格

主要改动

1. footer.php
  • 将原来的 div 按钮替换为 SVG 圆形进度指示器
  • 添加 SVG 渐变定义(支持亮色/暗色模式切换)
  • 新增 轮盘展开式菜单(包含「目录」「顶部」「底部」三个功能按钮)
  • 保留并优化文章目录面板
2. style.css
  • SVG 进度环样式:使用 stroke-dasharraystroke-dashoffset 实现进度动画效果
  • 轮盘展开动画:使用 cubic-bezier(0.68, -0.55, 0.265, 1.55) 缓动函数实现弹性展开效果
  • 悬停效果优化:悬停时保持展开位置的同时轻微放大(scale 1.1)并改变背景色
  • 暗色模式适配:支持 data-bs-theme="dark" 自动切换配色
  • 目录面板动画:优化打开/关闭时的透明度和缩放过渡效果
3. boxmoe.js
  • 阅读进度计算:实时计算页面滚动百分比
  • SVG 进度更新:根据滚动位置动态更新圆环进度
  • 轮盘菜单交互
– 点击主按钮展开/收起轮盘菜单 – 「目录」按钮打开文章导读面板 – 「顶部」按钮平滑滚动到页面顶部 – 「底部」按钮平滑滚动到页面底部
  • 外部点击关闭:点击页面其他区域自动关闭所有菜单

交互流程

  1. 滚动页面超过 350px 时,左侧显示 SVG 圆形进度指示器
  2. 圆环随阅读进度实时填充,显示当前阅读百分比
  3. 鼠标悬停在按钮上时显示 百分比文字提示
  4. 点击进度按钮,轮盘菜单以弧形展开三个选项
  5. 悬停轮盘项时轻微放大并变色,保持位置不变
  6. 点击「目录」打开 文章导读面板,显示文章章节导航
  7. 点击外部区域自动关闭所有菜单

技术要点

  • SVG 圆形进度计算:圆周长 = 2πr ≈ 276.46(r=44)
  • stroke-dashoffset = 圆周长 – (进度百分比 × 圆周长)
  • 轮盘展开使用 CSS transform 的 translate 实现弧形分布
  • 暗色模式通过 CSS 变量和属性选择器实现自动切换
       

🛠️ 优化类型与对象

📌 优化背景 主题在 PHP 8.0 及以上版本运行时出现【未定义数组键】警告,需要进行兼容性修复以确保在 PHP 8 环境下稳定运行。

🔧 修复内容

文件路径行号问题描述修复方案
core/panel/includes/class-options-framework-admin.php483未定义数组键 boxmoe_msg_notice_info添加 isset($input[$id]) 检查
page/page-friendlink.php828$_GET['fl_type'] 未检查直接使用添加 isset($_GET['fl_type']) 检查
core/module/fun-navwalker.php72-76$args 对象属性可能未定义使用 null 合并运算符 ?? 确保属性存在
core/module/fun-admin.php601count() 对可能为 null 的变量使用使用 !empty() 替代 count()
core/panel/includes/class-options-media-uploader.php92使用 sizeof()(非最优)使用 count() 替代
page/template/user-home.php73使用已废弃的 global $user_ID使用 get_current_user_id() 替代

✨ 代码示例

// 🛡️ 修复前:直接访问可能不存在的数组键
$clean[$id] = $input[$id];

// 🛡️ 修复后:先检查键是否存在
if ( isset( $input[$id] ) ) {
    $clean[$id] = $input[$id];
}
// 🛡️ 修复前:对象属性可能未定义
$item_output = $args->before;

// 🛡️ 修复后:使用 null 合并运算符
$item_output = $args->before ?? '';

📋 优化结果

  • 消除 PHP 8 环境下的未定义数组键警告
  • 提升代码健壮性和兼容性
  • 主题完全支持 PHP 8.0 及以上版本

   

🚀 清理主题控制台日志输出

文件位置: assets/js/admin-toolbar-collapse.js · assets/js/shiroki-post-follow.js · page/p-signin.php · core/module/fun-role-manager.php · assets/js/boxmoe.js · core/module/fun-context-menu.php · assets/js/music-player/shiroki-music-error-handler.js
  • 问题描述:主题代码中存在大量 console.logconsole.warn 调试日志,在浏览器控制台中输出过多信息,影响调试体验和性能
  • 解决方案
清理调试日志:移除所有 console.log 调试输出,包括登录/注册流程、AJAX请求、按钮点击等日志 – 清理错误警告:移除图片懒加载失败、登录状态检查失败、用户面板操作失败等 console.warn 输出 – 保留注释掉的日志:对于已注释掉的 // console.log 保持原样,便于后续开发调试 – 保留错误处理逻辑:仅删除日志输出语句,保留原有的错误处理和降级逻辑
  • 涉及文件
admin-toolbar-collapse.js:移除 jQuery 检查失败日志 – shiroki-post-follow.js:移除订阅功能所有调试日志 – p-signin.php:移除登录/注册流程 15 处调试日志 – fun-role-manager.php:移除角色管理脚本加载日志 – boxmoe.js:移除 17 处 console.warn 日志(登录状态、图片加载、点赞收藏等) – fun-context-menu.php:移除图片复制失败日志 – shiroki-music-error-handler.js:移除音乐播放器错误日志
  • 效果说明:浏览器控制台不再输出主题相关的调试信息,保持控制台整洁,提升开发和用户体验
代码位置
  • 工具栏折叠:wp-content/themes/lolimeow-shiroki/assets/js/admin-toolbar-collapse.js
  • 文章订阅:wp-content/themes/lolimeow-shiroki/assets/js/shiroki-post-follow.js
  • 登录页面:wp-content/themes/lolimeow-shiroki/page/p-signin.php
  • 角色管理:wp-content/themes/lolimeow-shiroki/core/module/fun-role-manager.php
  • 核心JS:wp-content/themes/lolimeow-shiroki/assets/js/boxmoe.js
  • 右键菜单:wp-content/themes/lolimeow-shiroki/core/module/fun-context-menu.php
  • 音乐播放器:wp-content/themes/lolimeow-shiroki/assets/js/music-player/shiroki-music-error-handler.js
   

🖼️ 图片查看器移动端适配优化

文件位置: assets/css/image-viewer.css · assets/js/image-viewer.js
  • 问题描述:图片查看器在移动端打开时,图片显示过大超出屏幕范围,且操作按钮和关闭按钮在移动端显示不合适
  • 解决方案
图片尺寸限制:为移动端添加 max-width:90vwmax-height:70vh,确保图片自适应屏幕 – 关闭按钮适配:缩小按钮尺寸(40px→36px→32px),调整位置更靠近边缘 – 操作按钮栏优化:添加 flex-wrap:wrap 支持换行,调整间距和字体大小 – 多断点适配:针对 985px、768px、480px 三个断点分别优化
  • 效果说明:图片查看器在移动端现在能够正常显示,图片不会超出屏幕,操作按钮易于点击

代码位置

  • 样式定义:wp-content/themes/lolimeow-shiroki/assets/css/image-viewer.css
  • 交互逻辑:wp-content/themes/lolimeow-shiroki/assets/js/image-viewer.js
   

🏮 节日灯笼字体同步站点默认字体

文件位置: assets/css/style.css
  • 问题描述:节日灯笼的文字样式使用了硬编码的【黑体】字体,无法跟随站点字体设置统一变化
  • 解决方案:将 .deng-tfont-family 从硬编码的 黑体,Arial,Lucida Grande,Tahoma,sans-serif 修改为 inherit
  • 效果说明:灯笼文字现在会继承 body 的字体设置,而 body 字体由【字体设置】中的【站点默认字体】控制,实现了字体统一
修改内容
/* 修改前 */
.deng-t{font-family:黑体,Arial,Lucida Grande,Tahoma,sans-serif;font-size:3.2rem;color:#dc8f03;font-weight:700;line-height:85px;text-align:center}

/* 修改后 */
/* 🏮 节日灯笼文字样式 - 使用继承字体以同步站点默认字体设置 */
.deng-t{font-family:inherit;font-size:3.2rem;color:#dc8f03;font-weight:700;line-height:85px;text-align:center}

代码位置

  • 样式定义:wp-content/themes/lolimeow-shiroki/assets/css/style.css:4990
   

🐧 QQ邮箱头像显示修复

文件位置: core/module/fun-gravatar.php
  • 问题描述:用户使用QQ邮箱注册后,头像显示的是默认头像而非QQ头像,原因是QQ头像API格式已更新,旧版API在某些情况下无法正常获取头像
  • 解决方案
更新QQ头像API格式:将旧的API格式 headimg_dl?dst_uin=QQ号&spec=尺寸 更新为新的API格式 g?b=qq&nk=QQ号&s=尺寸新增专用函数:添加 boxmoe_get_qq_avatar_url() 函数专门处理QQ头像URL生成,支持动态尺寸调整(40/100/200/640) – 增强邮箱检测逻辑:添加空值检查 !empty($email)!empty($qq),使用 stripos 进行不区分大小写的邮箱后缀检测 – 优化头像获取优先级:确保QQ头像优先级高于WordPress默认头像,直接返回QQ头像URL不再检查WordPress原生头像
  • 效果说明:QQ邮箱注册用户现在能正确显示QQ头像,头像加载失败时自动回退到默认头像

代码位置

  • 头像处理逻辑:wp-content/themes/lolimeow-shiroki/core/module/fun-gravatar.php
   

📝 文章编辑器工具栏按钮优化

文件位置: assets/js/quicktags-shiroki-divider.js · assets/js/tinymce-shiroki-divider.js · core/module/fun-admin.php
  • 功能描述:在文章编辑器的工具栏上新增【换行】按钮,并优化【分割线】按钮的插入格式,让插入的内容在编辑器中更加清晰易读
  • 新增功能
【换行】按钮:在 Quicktags 文本编辑器和 TinyMCE 可视化编辑器的工具栏上新增【换行】按钮 – 点击后在光标位置插入   换行符,前后自动添加换行,让换行符单独占一行显示
  • 优化内容
【分割线】按钮:修改插入格式,从

改为 \n

\n,让分割线在编辑器中单独占一行 – 【换行】按钮:修改插入格式,从   改为 \n \n,让换行符在编辑器中单独占一行

  • 实现方案
Quicktags 文本编辑器:在 quicktags-shiroki-divider.js 中动态创建按钮并添加到工具栏,支持 DOM 变化监听确保动态加载时也能生效 – TinyMCE 可视化编辑器:在 tinymce-shiroki-divider.js 中注册插件,通过 editor.ui.registry.addButton 添加按钮 – PHP 注册:在 fun-admin.php 中通过 mce_external_pluginsmce_buttons 过滤器注册插件和按钮
  • 效果说明:编辑文章时,点击【换行】或【分割线】按钮,插入的内容会在编辑器中单独占一行显示,避免多个标签连在一起难以阅读的问题

代码位置

  • Quicktags 脚本:wp-content/themes/lolimeow-shiroki/assets/js/quicktags-shiroki-divider.js
  • TinyMCE 脚本:wp-content/themes/lolimeow-shiroki/assets/js/tinymce-shiroki-divider.js
  • PHP 注册:wp-content/themes/lolimeow-shiroki/core/module/fun-admin.php
   

🎬 文章编辑器全屏按钮位置优化

文件位置: assets/css/admin/admin-shiroki.css · core/module/fun-admin.php
  • 问题描述:WordPress 后台文章编辑器的 TinyMCE 可视化编辑器中,【专注写作模式(全屏)】按钮位于工具栏第三行的最右侧,盖住了【H4标题】等工具按钮,影响正常使用
代码位置
  • 样式定义:wp-content/themes/lolimeow-shiroki/assets/css/admin/admin-shiroki.css
  • PHP 加载:wp-content/themes/lolimeow-shiroki/core/module/fun-admin.php
   

🌓 主题切换按钮图标优化

文件位置: header.php · assets/css/style.css · assets/js/boxmoe.js
  • 功能描述:优化导航栏主题切换按钮的图标显示逻辑,根据当前主题显示对应的切换目标图标,提升用户体验
  • 优化内容
图标显示逻辑调整:亮色模式显示月亮图标(提示可切换到暗色),暗色模式显示太阳图标(提示可切换到亮色) – 太阳图标:带有旋转光芒动画的 SVG 图标,光芒持续旋转 – 月亮图标:带有星星闪烁动画的 SVG 图标,4颗星星循环渐显渐隐
  • 实现方案
PHP模板:在 header.php 的主题切换按钮中添加两个 SVG 图标,分别使用 theme-icon-suntheme-icon-moon 类名 – CSS样式:在 style.css 中添加图标显示控制样式,通过 [data-bs-theme] 属性选择器控制图标显示/隐藏 – JS功能:在 boxmoe.jsupdateActiveState 函数中添加图标切换逻辑,根据当前主题动态设置 display 属性
  • 效果说明:用户当前处于亮色模式时,按钮显示月亮图标提示可切换到暗色;处于暗色模式时,按钮显示太阳图标提示可切换到亮色,图标带有流畅的动画效果
代码位置
  • 按钮模板:wp-content/themes/lolimeow-shiroki/header.php
  • 样式定义:wp-content/themes/lolimeow-shiroki/assets/css/style.css
  • JS功能:wp-content/themes/lolimeow-shiroki/assets/js/boxmoe.js
   

📦 代码块折叠功能视觉优化

文件位置: assets/css/style.css · assets/js/code-block-collapse.js
  • 问题描述:代码块折叠功能的视觉效果不够美观,展开/收起按钮样式单一,且展开后按钮位置不合理会盖住代码或显示在代码块外部
  • 优化内容
☀️ 亮色模式按钮样式:将原本的深色渐变改为白色高斯模糊渐变色,使用 linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.7)) 配合 backdrop-filter: blur(8px) 实现毛玻璃效果 – 🌆 暗色模式按钮样式:将原本的白色半透明改为灰色高斯模糊渐变色,使用 linear-gradient(to bottom, rgba(50, 50, 50, 0), rgba(50, 50, 50, 0.8)) 配合 backdrop-filter: blur(8px)📖 展开状态按钮位置:优化展开后【收起代码】按钮的位置,使其显示在代码块底部中央,使用 :has(.code-block-expanded) 选择器为 wrapper 添加 padding-bottom: 45px 避免按钮盖住代码 – ✨ 悬停效果增强:悬停时增加模糊度到 blur(12px),提升交互反馈
  • 实现方案
CSS选择器优化:使用 .code-block-expanded ~ .code-block-collapse-toggle 控制展开状态下的按钮样式 – :has()伪类应用:使用 .code-block-collapse-wrapper:has(.code-block-expanded) 为包含展开代码块的容器添加底部内边距 – 渐变与模糊结合:通过 linear-gradientbackdrop-filter 组合实现美观的毛玻璃遮罩效果
  • 效果说明:代码块折叠按钮现在拥有更美观的毛玻璃视觉效果,亮色模式下为白色渐变,暗色模式下为灰色渐变,展开后按钮显示在代码块底部中央且不会遮挡代码内容
代码位置
  • 样式定义:wp-content/themes/lolimeow-shiroki/assets/css/style.css:4869-4965
  • JS功能:wp-content/themes/lolimeow-shiroki/assets/js/code-block-collapse.js
   

📝 底部栏版权文本优化

文件位置: core/module/fun-basis.php
  • 功能描述:将底部栏的 Copyright 文本改为中文【版权©】,使版权信息更符合中文网站展示习惯
  • 修改内容
原文本'Copyright'新文本'版权©'修改位置:第458行
  • 实现方案
– 在 boxmoe_footer() 函数中,修改底部版权信息的输出逻辑 – 当 boxmoe_footer_copyright_hidden 选项未开启时,显示【版权©】而不是【Copyright】 – 同时移除了重复的 © 符号,因为【版权©】已经包含了版权符号
  • 代码变更
/* 📝 修改前 */
<span><?php echo get_boxmoe('boxmoe_footer_copyright_hidden') ? '' : 'Copyright'; ?> © <?php echo date('Y'); ?> ...</span>

/* 📝 修改后 */
<span><?php echo get_boxmoe('boxmoe_footer_copyright_hidden') ? '' : '版权©'; ?> <?php echo date('Y'); ?> ...</span>
  • 效果说明:底部栏版权信息现在显示为【版权© 2025 网站名称】,更加符合中文用户的阅读习惯
       

🎲 侧边栏随机文章小部件布局优化

文件位置: core/widgets/widget-random-posts.phpassets/css/style.css
  • 问题描述:侧边栏随机文章小部件中,【阅读全文】链接与日期在同一行显示,导致布局拥挤且不够美观
  • 修改内容
widget-random-posts.php 第55-67行:重构日期、摘要和阅读链接的HTML结构 – style.css 第2796-2799行:新增 .post-meta 容器样式和 .read-more 链接样式
  • 实现方案
– 将日期、摘要和【阅读全文】链接包裹在一个新的

<div class="post-meta">

容器中 – 使用 CSS Flexbox 布局,设置 flex-direction: column 使子元素垂直排列 – 为【阅读全文】链接添加独立的样式,包括字体大小、主色调和悬停效果

  • 效果说明
– 【阅读全文】链接现在显示在日期下方,布局更加清晰美观 – 垂直排列使每个文章条目层次分明,提升用户阅读体验 – 悬停时链接颜色变化和下划线效果增强交互反馈 – 修改后的布局结构:
📅 日期
    📄 摘要(如果有)
    🔗 阅读全文

       

🔍 搜索框样式全面重构与侧边栏同步

文件位置: assets/css/search-styles/search-glass.cssassets/css/search-styles/search-comic.cssassets/css/search-styles/search-shadow.cssassets/css/search-styles/search-line.cssassets/css/search-styles/search-neon.csscore/widgets/widget-search.phpheader.phpassets/js/search-validation.js
  • 功能描述:重构导航栏搜索框样式,新增5种风格(玻璃/漫画/阴影/线条/发光),并实现侧边栏搜索框与主题布局边框设置的自动同步
  • 问题描述
– 原搜索框样式单一,无法满足不同主题风格需求 – 侧边栏搜索框使用WordPress默认样式,与主题整体风格不统一 – 移动端搜索框位置偏移,与导航栏按钮不对齐 – 表单验证提示框使用浏览器默认样式,不够美观
  • 修改内容
新建搜索样式CSS文件:创建5个独立的搜索样式文件,分别实现玻璃拟态、漫画风、阴影效果、线条风格和发光效果 – widget-search.php:重构侧边栏搜索widget,根据主题布局边框设置自动选择对应的搜索样式 – header.php:加载所有搜索样式CSS文件和表单验证JS文件 – search-validation.js:创建表单验证脚本,实现自定义气泡提示效果 – style.css:删除原搜索框样式,避免冲突
  • 实现方案
玻璃拟态风格:使用 backdrop-filter: blur() 实现毛玻璃效果,柔和阴影营造层次感 – 漫画风风格:右下双边框加粗(3px),配合倾斜变换和阴影,营造手绘漫画感 – 阴影风格:新拟态设计,内外阴影结合,营造立体感 – 线条风格:简洁线条边框,配合流动动画效果 – 发光风格:霓虹发光效果,暗色模式下尤为突出 – 侧边栏同步:通过 get_boxmoe('boxmoe_blog_border') 获取布局边框设置,自动映射到对应搜索样式 – 表单验证:阻止浏览器默认验证提示,使用红色气泡提示”请输入内容”,3秒后自动消失
  • 效果说明
– 导航栏搜索框支持5种风格切换,与主题整体风格协调统一 – 侧边栏搜索框自动同步主题布局边框设置,无需手动配置 – 移动端搜索框位置优化,与导航栏按钮水平对齐 – 表单验证提示改为红色气泡样式,更加美观友好 – 搜索按钮悬停时有颜色变化和缩放效果,增强交互反馈

       

🔐 登录系统重构

核心目标:

  • ✅ 禁用WordPress默认登录页面wp-login.php
  • ✅ 修复管理员登录需要二次验证的问题
  • ✅ 优化Session会话管理,增强服务器兼容性
  • ✅ 修复登录相关函数未定义错误
  • ✅ 统一所有登录入口到自定义登录页面

🔒 禁用WordPress默认登录页面

功能说明

彻底禁用WordPress原生wp-login.php页面,将所有登录相关操作重定向到自定义的【欢迎回来站长大人】登录页面,提升用户体验和品牌形象。

涉及文件

文件位置: core/module/fun-user.php

修改内容

  1. 拦截wp-login.php访问
  2. 替换WordPress默认登录URL
  3. 替换注册和找回密码URL
  4. 退出登录后重定向

保留的必要功能

以下操作仍然可以正常访问wp-login.php:
  • 退出登录 (action=logout)
  • 重置密码 (action=rpaction=resetpass)
  • 重置密码链接 (带keylogin参数)
  • 登录表单提交 (POST请求)

🎯 修复管理员登录重复输入密码问题

问题描述
管理员在自定义登录页面完成登录后,会被重定向到WordPress默认的wp-login.php页面,需要再次输入密码才能进入后台。
问题原因
handle_user_login()函数中,虽然调用了wp_signon()进行认证,但缺少wp_set_auth_cookie()调用来设置认证cookie。这导致用户认证成功,但浏览器没有收到登录cookie,跳转到后台时WordPress认为用户未登录。
涉及文件
文件位置: core/module/fun-user.php 第291-316行
修改内容
  • 添加: wp_set_auth_cookie($user->ID, $remember, is_ssl())
  • 作用: 设置WordPress认证cookie,确保浏览器保存登录状态
  • 位置: handle_user_login()函数中,在wp_set_current_user()之后
修复后的登录流程
  1. 用户在自定义登录页输入账号密码
  2. AJAX提交到后端认证
  3. wp_signon()认证成功
  4. wp_set_current_user()设置当前用户对象
  5. wp_set_auth_cookie()设置认证cookie ⭐【新增】
  6. do_action('wp_login')触发登录钩子
  7. 返回对应的重定向地址(管理员→后台,普通用户→会员中心)
  8. 前端跳转到目标页面
  9. ✅ WordPress后台检查通过,无需二次登录
效果说明
  • 👮‍♂️ 管理员登录: 直接跳转到wp-admin后台,无需二次输入密码
  • 👤 普通用户登录: 跳转到会员中心页面
  • 🔒 登录状态持久化: 刷新页面或打开新标签页,登录状态保持

🔄 Session会话管理优化

问题描述
在服务器环境中,由于PHP的Session配置可能与本地环境不同,导致验证码功能无法正常工作,影响用户登录。
涉及文件
文件位置: core/module/fun-captcha.php 第14-35行
优化内容
优化项说明
Headers检查在启动Session前检查headers是否已发送,避免错误
Cookie参数设置显式设置Session cookie的各项参数
Secure标志根据is_ssl()自动设置secure标志,HTTPS环境下更安全
HttpOnly标志防止XSS攻击,JavaScript无法访问Session cookie
SameSite属性设置为Lax,防止CSRF攻击的同时保持可用性
错误抑制使用@抑制可能的警告,确保页面正常加载
效果说明
  • ✅ 验证码功能在服务器环境下正常工作
  • ✅ Session cookie安全性提升
  • ✅ 跨域兼容性增强
  • ✅ 避免不必要的PHP警告
上一次更新已经跑远惹✨ 计算中...
(‾◡◝) 本内容里的一些消息,可能已经跟不上时间啦~
感谢您的支持
微信赞赏

微信扫一扫

支付宝赞赏

支付宝扫一扫



评论(2)

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

发表评论

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