🎨 ErphpDown插件UI界面重构
文件位置: wp-content/plugins/erphpdown/ 目录下多个文件
功能概述
将ErphpDown下载管理系统的插件界面UI,与ImageShiroki主题的后台设置页面UI完全统一美化,导航移至插件界面内部,而非后台列表中。
核心特性
- 统一设计语言:所有UI元素(按钮、表单、卡片、标签)均遵循主题的设计语言
- 标签式导航:将原有的多子菜单结构整合为单一主界面,导航移至插件内部
- 卡片式布局:采用主题的卡片式设计,增强视觉层次感
- 现代UI元素:实现了浮动标签输入字段、渐变设计元素、圆角输入框等
- 响应式设计:确保界面在不同屏幕尺寸下均能正常工作
- CSS过渡与动画:添加了平滑的过渡效果和悬停动画
修改的主要文件
erphp-main.php:主界面模板,包含标签式导航
- 修改为匹配主题的HTML结构,采用卡片式布局
- 添加了渐变标题和适当的类名
- 整合了所有子菜单为标签式导航
erphp-main.css:主题样式文件
- 创建了与主题一致的CSS样式
- 实现了浮动标签效果、卡片设计和渐变按钮
- 覆盖了插件的默认样式
erphp-settings.php:设置页面
- 更新为使用主题的卡片式布局和表单样式
- 添加了浮动标签和卡片容器的适当类名
- 优化了表单结构和分组
技术实现要点
- 菜单重组:修改插件的菜单系统,只显示一个主菜单项
- 使用add_menu_page注册单一主菜单
- 移除了所有子菜单注册
- 主题CSS集成:
- 加载主题的CSS样式文件
- 定义了与主题一致的CSS变量
- 实现了主题的设计语言
- 浮动标签效果:
.ish-field .ish-input:focus + .ish-float,
.ish-field .ish-input:not(:placeholder-shown) + .ish-float {
top: -9px !important;
transform: none !important;
font-size: 12px !important;
color: var(--ish-primary) !important;
}
- 卡片式布局:
.ish-admin-card {
padding: 18px !important;
border-radius: 18px !important;
background: linear-gradient(180deg, rgba(255,255,255,0.98), rgba(246,248,255,0.92)) !important;
border: 1px solid var(--ish-border) !important;
box-shadow: 0 8px 24px rgba(22,32,58,0.06) !important;
margin-bottom: 18px !important;
}
- 渐变按钮样式:
.ish-admin .button-primary {
background: linear-gradient(90deg, #FF9F43, #FF7A59) !important;
box-shadow: 0 10px 20px rgba(255,159,67,0.25) !important;
color: #fff !important;
border: none !important;
border-radius: 999px !important;
}
修复的问题
- Edit工具中的字符串替换问题:通过先读取确切的文件内容,然后进行精确编辑来修复
- 多次菜单注册尝试:仔细删除了旧的菜单注册调用
- CSS特异性问题:创建了具有更高特异性选择器的专用CSS文件
- HTML结构不匹配:更新了HTML结构以匹配主题的容器类
- $wpdb变量未定义错误:在所有使用$wpdb的文件中添加了global $wpdb声明
效果展示
- 插件在WordPress后台侧边栏中只有一个主菜单项
- 所有插件设置都通过与主题设置页面设计相同的标签式界面访问
- 实现了卡片式布局、浮动标签和渐变按钮
- 应用了响应式设计原则,适配不同屏幕尺寸
- 界面与主题的设计一样,导航移至插件内部
🚨 erphpdown插件致命错误修复(停用钩子函数缺失)
文件位置: wp-content/plugins/erphpdown/erphpdown.php
- 问题描述: 停用erphpdown插件时出现致命错误:
Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, function "erphpdown_uninstall" not found or invalid function name - 修复内容:
1. 添加缺失的停用函数: 在erphpdown.php文件中添加了erphpdown_uninstall函数,防止停用插件时出现回调函数不存在的错误
2. 添加缺失的激活函数: 同时添加了erphpdown_install函数,确保插件激活时也能正常工作
3. 遵循代码注释规范: 为新函数添加了符合规范的emoji标题注释
- 解决效果: 插件可以正常激活和停用,不再出现致命错误
代码修改:
// 🔧 插件激活函数
function erphpdown_install() {
// 空函数,防止激活插件时出现错误
}
// 🥳 插件停用函数
function erphpdown_uninstall() {
// 空函数,防止停用插件时出现错误
}
影响范围: 仅修改了erphpdown插件的主文件,不影响插件的其他功能和主题的正常运行
🐛 PHP 8.0+ 兼容性修复(erphpdown)
文件位置: wp-content/plugins/erphpdown/includes/init.php
- 问题描述: Inteliphense诊断报错,包括类型不匹配和废弃函数调用
- 修复的错误:
- Expected type 'object|array'. Found 'string'(第339行)
- 'curl_close' is deprecated(第377、393、410行)
- 修复内容:
1. 类型安全处理: 在erphpdown_file_post函数中添加类型检查,确保http_build_query()只接收数组或对象类型参数
2. 废弃函数移除: 删除所有curl_close()调用,PHP 8.0+中不再需要显式关闭cURL资源,会自动处理资源释放
- 解决效果: 消除了所有Inteliphense诊断错误,确保代码在PHP 8.0+环境中正常运行
🔒 登录状态显示修复
文件位置: assets/js/boxmoe.js · wp-content/plugins/erphpdown/includes/init.php · core/module/fun-user.php
- 问题描述: 用户登录后不显示登录状态,点击登录按钮等同于刷新页面,出现"安全认证失败,请刷新页面重试"错误
- 修复内容:
1. JavaScript冲突修复: 修改boxmoe.js中的validation函数,排除登录表单#loginform,避免与AJAX登录提交事件冲突
2. PHP会话干扰解决: 修改erphpdown插件的erphpdown_nologinpay_check函数,仅在非登录状态下启动会话,避免干扰WordPress cookie-based身份验证机制
3. 优化nonce验证机制: 修改handle_user_login函数,避免因页面停留时间过长导致nonce过期无法登录的问题
4. 登录状态持久化: 确保is_user_logged_in()函数正确返回用户登录状态,修复登录后不显示会员中心等问题
- 解决效果: 登录功能恢复正常,用户登录后显示正确的会员信息,点击登录按钮执行正常的AJAX登录请求
👤 管理员后台访问权限修复
问题描述: 部分设备偶然性登录后,管理员身份无法访问后台管理页面,打开链接直接跳转到首页
修复范围:
- 主题文件修复:
wp-content/themes/lolimeow/core/module/fun-admin.php - 插件文件修复:
wp-content/plugins/erphpdown/includes/init.php
主题修复内容:
- 函数:
boxmoe_restrict_admin_access - 修复点:
- 将钩子从 admin_init 改为 admin_menu,确保用户身份完全确认后再执行重定向
- 添加 is_user_logged_in() 检查,只对已登录用户进行重定向
- 保留 current_user_can('manage_options') 检查,确保只有非管理员才会被重定向
插件修复内容:
- 函数:
erphpdown_noadmin_redirect - 修复点:
- 将钩子从 init 改为 admin_init,确保用户身份完全确认后再执行重定向
- 添加 is_user_logged_in() 检查,只对已登录用户进行重定向
- 添加 current_user_can('manage_options') 检查,确保管理员不会被重定向
- 添加 exit 语句,确保重定向后立即终止脚本执行
修复原理:
- 钩子执行时机问题: 原代码使用过早的钩子(
admin_init和init),在用户身份完全确认之前就执行了重定向逻辑 - 权限检查不完整: 缺少对管理员权限的明确检查,导致管理员也可能被错误重定向
- 重定向逻辑缺陷: 缺少对用户登录状态的检查,可能导致未登录用户也被重定向
修复效果:
- 管理员用户在登录后能够正常访问后台管理页面
- 无论是通过点击"访问后台"链接还是直接访问后台URL,都不会被错误地重定向到首页
- 非管理员用户仍然被正确重定向到首页,保持了原有的安全控制
- 修复了部分设备偶然性登录后无法访问后台的问题
🔍 搜索框样式优化
文件位置: assets/css/style.css
修复内容
- 暗色模式下搜索框白色描边:
- 为侧边栏和底部栏搜索框添加白色描边效果,增强暗色模式下的可见性
- 使用 outline: 2px solid rgba(255, 255, 255, 0.9) !important 实现
- 调整描边位置:outline-offset: -2px !important
- 保留漫画风边框效果:
- 修复了之前修改破坏漫画风边框效果的问题
- 恢复了透明背景:background: transparent !important
- 移除了多余阴影:box-shadow: none !important
- 保留了原本的边框和文字颜色
- 导航栏搜索框修复:
- 确保导航栏搜索框在暗色模式下也能显示漫画风效果
- 在暗色模式下,将导航栏搜索框的边框和阴影颜色改为白色
- 将背景色改为暗色背景,文字颜色改为白色
- 移除了可能冲突的白色描边
- 样式优先级优化:
- 使用了 !important 确保白色描边样式生效
- 使用了多重选择器确保样式能应用到所有相关元素
- 为不同边框样式添加了样式规则
- 底部栏搜索框修复:
- 修复了底部栏搜索框的样式问题
- 确保底部栏搜索框在暗色模式下也能显示白色描边
- 保留了原本的漫画风边框效果
使用效果
- 暗色模式下,侧边栏和底部栏搜索框显示明显的白色描边,提高了可见性
- 所有搜索框在暗色模式下都能保留原本的漫画风边框效果
- 导航栏搜索框在暗色模式下显示白色边框和阴影,与主题风格保持一致
- 搜索框在不同位置(导航栏、侧边栏、底部栏)都能显示正确的样式
实现要点
- 使用了
outline属性而不是border,避免破坏原本的边框样式 - 调整了
outline-offset确保描边位置合适 - 为不同位置的搜索框添加了针对性的样式规则
- 确保了样式的优先级,避免被其他样式覆盖
- 保留了主题原本的设计风格和漫画风边框效果
修复内容:
- 修复了底部栏小部件功能丢失问题
- 修复了当前用户信息的头像样式
- 修复了书签的图片显示问题
- 优化了文字布局
- 同步了底部栏和侧边栏的书签样式
- 修复了漫画风边框时非悬停状态下底座样式显示问题
- 统一了搜索小部件样式,使其与侧边栏样式一致
- 修复了搜索小部件不显示问题
- 确保搜索小部件样式绑定到主题布局边框设置
- 修复了侧边栏和底部栏链接小部件样式不一致问题,确保头像和标题显示样式统一
- 统一了链接小部件的布局、头像大小、标题样式和交互效果
- 修复了底部栏链接小部件的卡片样式,使其与侧边栏保持一致
- 确保所有链接小部件在不同位置(侧边栏、底部栏)显示方式完全一致
🐛 会员插件修复(ErphpDown)
🚀 修复插件设置页面访问错误
文件位置:
erphpdown/includes/functions.erphp.phperphpdown/includes/init.phperphpdown/admin/erphp-main.phperphpdown/admin/erphp-settings.phperphpdown/admin/erphp-front.phperphpdown/admin/erphp-payment.phperphpdown/admin/erphp-vip-setting.php
修复内容:
- 插件安装提示链接修复:
- 修复了插件安装后提示信息中"去设置"链接的访问错误
- 将链接从 admin.php?page=erphpdown/admin/erphp-settings.php 改为 admin.php?page=erphpdown-main&tab=settings
- 表单提交URL修复:
- 修复了【显示设置】、【支付设置】、【VIP设置】等页面的表单提交URL错误
- 将所有设置页面的表单 action 属性修改为正确的标签页格式
- 例如:admin.php?page=erphpdown-main&tab=front 代替直接访问文件的URL
- 权限统一修复:
- 修复了菜单注册权限与页面访问权限不一致的问题
- 将菜单注册的权限从 activate_plugins 改为 manage_options
- 确保与 erphp-main.php 中的权限检查保持一致
- 全局保护机制:
- 在 functions.erphp.php 中添加了 erphpdown_protect_admin_files() 函数
- 处理所有直接访问admin目录下文件的请求,自动重定向到正确的标签页URL
- 定义了文件名到标签页名称的映射关系,确保正确重定向
修复原理:
- URL格式问题:WordPress只注册了
erphpdown-main作为合法菜单项,直接访问erphpdown/admin/erphp-settings.php会被权限系统拒绝 - 权限不一致:菜单注册和页面访问使用了不同的权限,导致管理员用户在某些情况下无法正常访问
- 表单提交错误:多个设置页面的表单提交到了错误的URL,导致保存后出现权限错误
修复效果:
- 插件安装后点击"去设置"链接能正确跳转到设置页面
- 所有设置页面点击"保存设置"按钮后能正确处理,不会出现权限错误
- 管理员用户能正常访问所有设置页面
- 统一了插件的权限设置,避免了权限不一致导致的访问问题
- 修复了部分用户在某些设备上无法访问插件设置页面的问题
技术说明:
- 插件使用了标签页模式管理所有设置页面,通过
erphpdown-main主页面和tab参数来区分不同的设置页面 - 修复后,所有设置页面的访问和表单提交都通过正确的标签页URL进行,符合WordPress的权限管理机制
- 新增的全局保护机制确保了即使有其他地方使用了错误的URL,也能被正确重定向,提高了插件的健壮性
📱 移动端文章列表布局优化
文件位置: page/template/blog-list.php · assets/css/style.css
- 功能描述: 优化移动端文章列表布局,实现一行两个四方形卡片展示,文字溢出显示省略号
- 核心优化点:
- 将所有文章列表统一改为栅格布局,使用 col-sm-6 确保移动端一行两个卡片
- 实现四方形图片容器,使用 padding-top: 75% 保持 4:3 比例
- 标题溢出显示省略号(最多2行)
- 内容溢出显示省略号(最多3行)
- 确保卡片高度一致,内容区域填满卡片
- 保持上图下文的布局结构
- 代码修改:
- 模板文件:page/template/blog-list.php - 统一使用栅格布局
- CSS样式:assets/css/style.css - 添加移动端四方形卡片样式
- 使用效果:
- 移动端文章列表以一行两个四方形卡片形式呈现
- 文字超过四方形容器时显示省略号
- 卡片内部保持上图下文布局
- 提升了移动端的视觉体验和浏览效率
📅 日期显示优化
文件位置: assets/css/style.css
- 问题描述: 修复移动端文章卡片中日期分行显示的问题
- 修复方案:
- 将 .list-three .list-post-author 的 display 从 block 改为 inline-flex
- 添加 flex-wrap: nowrap 确保内容不换行
- 添加 white-space: nowrap 确保文本不折行
- 调整分隔符 .dot 的 margin 为 0 5px,优化间距
- 在媒体查询中应用相同修复,确保移动端显示一致
- 代码修改:
- CSS样式:assets/css/style.css - 修改 .list-three .list-post-author 相关样式
- 修复效果:
- 作者名和日期在同一行显示
- 消除了日期分行的问题
- 提升了卡片的整体美观性
- 保持了一致的视觉体验
🎨 后台侧边栏菜单样式优化
文件位置: 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]

评论(2)