首页
登录
搜索
搜索
blogger
UID:1
累计撰写
40
篇文章
累计收到
2
条评论
首页
登录
网站插件
2026-6-8
子比主题页脚优化 快速搭建精致动物背景墙效果
美化简介 本套美化专为子比主题打造,可给网站底部添加动物墙样式,完美兼容电脑PC端与手机移动端,实用性很强,部署之后页面观感提升明显。注意:美化仅适配子比原版默认页脚,若是二改二次开发的主题模板,请自行测试调试! 美化核心亮点 动态动物墙动画效果页面底部加载趣味生动的动物图标动画元素,告别单调死板的传统页脚设计,给访客新颖亮眼的视觉体验。 全设备自适应兼容...
2026-6-8
11 阅读
2 评论
网站插件
2026-6-8
子比主题专用靓号插件助力网站账号精细化管理
一、核心功能 UID靓号商城:开放1-10000区间UID号码选购 智能等级识别:自动划分5档号码品级 积分支付系统:对接子比积分,下单自动抵扣积分 用户中心展示:主页展示已购靓号,可切换主号码 后台管理面板:号码管控、订单查阅、数据统计一站式操作 二、靓号等级收费体系 等级标识等级名称号码识别特征定价区间👑传说至尊一位短号、四连同号、特殊稀有号5000元以上💎至尊靓号两位短号、高辨识度四顺子号1000-4999元⭐精品靓号三位豹子号、对称号、AABB/ABAB格式200-999元✨优质靓号吉祥寓意号、尾豹子号、无4纯净号50-199元📱普通号码带数字4、无特殊排列规律号码基础定价 zibll-lianghao/ ├── zibll-lianghao.php # 主插件文件(插件入口) ├── assets/ │ ├── css/ │ │ ├── admin-style.css # 后台管理样式 │ │ └── frontend-style.css # 前台商城样式 │ └── js/ │ └── frontend-script.js # 前台交互脚本 ├── inc/ │ └── options.php # 后台管理面板(设置/管理/统计) ├── includes/ │ ├── class-database.php # 数据库操作类(核心数据层) │ └── functions-lianghao.php # 核心功能函数(前台渲染/AJAX处理) └── templates/ └── page-zll-tailwind.php # Tailwind风格页面模板 🚀插件使用方法|快速上手步骤 把 zibll-lianghao 文件夹上传至 wp-content/plugins/ 目录 登录WordPress后台,点开「插件」栏目完成插件激活 侧边栏找到「UID靓号商城」专属后台管理菜单进入 打开「数据库工具」,可一键导入测试数据,也能手动录入靓号 新建空白页面,内容框填入简码 ,也可选用专属页面模板 点击发布页面,靓号商城功能即刻生效! 二、前台简码调用指令 / :渲染靓号商城主前台页面 :展示用户中心「我的靓号」个人页面 三、精美页面模板选择 编辑页面时,页面模板下拉框选择 UID靓号商城(Tailwind风格),一键套用高颜值页面布局样式 格式干净,复制粘贴到编辑器直接发布,符号分段清晰可读性高
2026-6-8
8 阅读
0 评论
网站插件
2026-6-2
🚀 时光帖子ID管理插件:自定义文章ID,掌控内容发布
自由选择未被使用的文章ID,让内容管理更加有序和精准,饺子二次修改 ✨ 新增功能亮点 🔍 智能ID检测系统 自动扫描数据库,快速识别未使用的文章ID 高效SQL查询,毫秒级响应 默认显示前200个可用ID 📝 写文章页面弹窗选择 进入写文章页面自动弹出ID选择窗口 下拉式选择框设计,节省页面空间 未选择ID前确认按钮禁用 🛡️ 防误触弹窗设计 点击弹窗外部区域不会关闭 精美的渐变背景和动画效果 响应式布局,适配各种屏幕 📖 使用教程 方法一:写文章页面快速选择(推荐) 步骤 1:进入写文章页面 WordPress后台 → 文章 → 写文章 步骤 2:选择文章ID 弹窗自动显示所有可用的文章ID 从下拉列表中选择您喜欢的ID 点击「确认使用此ID」按钮 步骤 3:开始编辑 页面自动跳转到文章编辑页面 此时文章ID已设置为您选择的ID 编辑内容后点击「发布」即可 方法二:后台管理页面添加到草稿箱 1. 进入工具页面: WordPress后台 → 工具 → 时光帖子 2. 添加到草稿箱:在「未使用的文章ID」列表中找到目标ID,点击ID旁边的「+」按钮,系统提示成功创建草稿。 3. 从草稿箱发布: WordPress后台 → 文章 → 草稿 ,找到刚创建的草稿文章,点击编辑并发布。 📦 安装说明 下载插件:获取 shiguang-post.zip 压缩包 安装插件:WordPress后台 → 插件 → 安装插件 → 上传插件 启用插件:在插件列表中找到「时光帖子ID管理」,点击「启用」按钮 ⚠️ 注意事项 ID唯一性:每个文章ID只能使用一次,已使用的ID不会出现在可选列表中 权限要求:需要具备「发布文章」权限才能使用本插件功能 主题兼容:已优化与主流WordPress主题的兼容性 缓存清理:插件自动处理缓存,无需手动操作 💡 时光帖子ID管理插件为WordPress内容管理带来了全新的灵活性,让您能够自由掌控文章ID的分配。立即安装体验,开启高效精准的内容管理之旅! 插件版本:v1.3.2 | 作者:fuhua 预览图
2026-6-2
2 阅读
0 评论
网站插件
2026-5-30
亲测可用 子比超级插件 V1.8.7 纯净无捆绑版本
先看预览图 子比超级插件 v最新版 | 需要 Zibll 主题 v7.0+ | WordPress 6.0+ | PHP 8.0+ 如有问题请联系管理员 .zm-tutorial{max-width:960px;margin:20px auto} .zm-tutorial .zm-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:24px 28px;margin-bottom:20px;box-shadow:0 1px 6px rgba(0,0,0,.04)} .zm-tutorial h1{font-size:26px;margin:0 0 6px;display:flex;align-items:center;gap:10px} .zm-tutorial h1 .ver{font-size:13px;background:#3498db;color:#fff;padding:2px 10px;border-radius:12px;font-weight:400} .zm-tutorial .subtitle{color:#666;font-size:14px;margin:0 0 20px} .zm-tutorial h2{font-size:20px;margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid #f0f0f0;display:flex;align-items:center;gap:8px} .zm-tutorial h2 .dashicons{color:#3498db} .zm-tutorial h3{font-size:15px;margin:14px 0 6px;color:#333} .zm-tutorial p{margin:6px 0;line-height:1.7;color:#555} .zm-tutorial code{background:#f4f6f8;padding:2px 8px;border-radius:4px;font-size:13px;color:#e74c3c;border:1px solid #e8ecef} .zm-tutorial .shortcode-box{background:#f8f9fa;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;margin:8px 0 14px;font-family:monospace;font-size:14px} .zm-tutorial .shortcode-box code{background:transparent;border:none;padding:0;color:#2d3748;font-size:14px} .zm-tutorial .tip{background:#e8f5e9;border-left:4px solid #27ae60;padding:10px 16px;border-radius:0 8px 8px 0;margin:10px 0;font-size:13px;color:#2e7d32} .zm-tutorial .warn{background:#fff3e0;border-left:4px solid #f39c12;padding:10px 16px;border-radius:0 8px 8px 0;margin:10px 0;font-size:13px;color:#e65100} .zm-tutorial .steps{counter-reset:step} .zm-tutorial .steps li{list-style:none;padding:6px 0 6px 36px;position:relative;line-height:1.7;color:#555} .zm-tutorial .steps li::before{counter-increment:step;content:counter(step);position:absolute;left:0;top:6px;width:24px;height:24px;background:#3498db;color:#fff;border-radius:50%;text-align:center;line-height:24px;font-size:13px;font-weight:600} .zm-tutorial .toc{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin:12px 0} .zm-tutorial .toc a{display:block;padding:8px 12px;background:#f8f9fa;border:1px solid #e8ecef;border-radius:8px;text-decoration:none;color:#333;font-size:13px;transition:all .2s} .zm-tutorial .toc a:hover{background:#ebf5fb;border-color:#3498db;color:#3498db} .zm-tutorial .toc a .dashicons{font-size:16px;width:16px;height:16px;margin-right:4px;vertical-align:middle} .zm-tutorial hr{border:none;border-top:1px solid #f0f0f0;margin:20px 0} 子比超级插件 使用教程 v最新版 集成16大功能模块的 Zibll 主题超级扩展插件,本页将逐一介绍每个模块的配置和使用方法。 快速导航 美化 统计 排行榜 广告 举报 工单 团购 商城团购 砍价 抽奖 悬赏 聊天室 AI摘要 AI文章 AI工具 字体定制 所有模块默认启用。如需关闭某个模块,在 总览 页面点击模块卡片上的开关即可。关闭后该模块的前后端功能均不加载。 基础设置 环境要求 WordPress 6.0+,PHP 8.0+ 必须启用 Zibll (子比) 主题(v7.0 以上推荐 v8.x) 推荐开启伪静态 + Permalink 设置为非朴素模式 模块开关 前往 子比超级插件 → 总览,每个模块卡片右上角有开关按钮,关闭后该模块的前后端功能均不加载。 前端资源 插件自动在前端注入 zm_ajax 对象(含 ajax_url 和 nonce),所有模块的 AJAX 请求共用此对象,无需额外配置。 1. 美化模块 提供 40+ 个 CSS/JS 美化片段,分为 5 大类别,每个片段独立开关,按需加载不影响性能。 使用方法 前往 子比超级插件 → 美化设置 片段按分类展示:全局效果、导航栏、卡片列表、组件装饰、交互特效 点击每个片段旁的开关来启用/关闭 部分片段支持鼠标光标预设(黑神话悟空/科技纪元/水晶猫/熊猫/简约灰) 前端即时生效,无需刷新缓存 片段分类 🌐 全局效果:彩虹滚动条、图标美化(86个渐变图标)、鼠标美化(5套预设)、全屏飘雪、樱花飘落、选中颜色、加载动画 🧭 导航栏:Logo扫光 🃏 卡片列表:大屏五列卡片、卡片装饰、图片悬停发光、模块背景美化、彩色标签(5色循环)、新文章徽章、macOS圆点、标题前缀徽章(可在文章编辑时选择SVG/文字徽章) 🧩 组件装饰:底部徽章按钮、翻页美化、悬浮按钮渐变、弹窗背景美化、时钟小工具、六宫格导航、侧栏动态时钟(公历/农历/节日倒计时)、数据统计条(数字滚动动画)、二次元排行榜、火焰徽章、用户信息卡片(SVG波浪封面)、新版排行榜、信息统计卡片、区块渐变背景(6套预设色)、B2风格页脚、精品推荐横幅 ✨ 交互特效:自定义右键菜单(毛玻璃风格)、彩色消息提示(Toast通知)、评论通知弹窗、波浪下划线、评论框装饰(企鹅背景)、评论二次元背景(25张轮换)、登录提示栏、灵动岛(iPhone风格通知)、热评弹窗、夸夸评论(随机语录一键提交)、二次元不倒翁(可拖拽互动) 部分小工具类片段(六宫格导航、数据统计条、精品推荐横幅等)启用后需到 外观 → 小工具 中配置内容。 2. 统计模块 PV/UV 实时统计 + 每日自动收集(新注册、订单、收入、新文章、新评论)+ 可视化面板。 使用方法 启用模块后自动开始统计,无需额外配置 前往 统计面板 查看图表 支持选择时间范围(7天/30天/365天)查看趋势 数据通过 wp_cron 每日自动汇总 统计维度 PV — 页面浏览量(实时) UV — 独立访客(基于IP去重) 新注册 — 每日新注册用户数 订单 / 收入 — 与子比 ZibPay 支付系统联动 新文章 / 新评论 — 每日新增内容统计 统计使用 transient 缓存当日PV/UV,不依赖第三方服务,完全本地化。 3. 排行榜模块 5种排行维度 × 4种时间周期 + Widget侧栏 + 每日 cron 自动刷新。 排行类型 income — 收入排行 points — 积分排行 posts — 发文排行 comments — 评论排行 likes — 获赞排行 时间周期 daily 日榜 | weekly 周榜 | monthly 月榜 | all 总榜 短代码 参数:type 排行类型,period 时间周期,limit 显示数量(默认10),tabs 是否显示Tab切换(默认1)。 Widget 前往 外观 → 小工具,添加 "子比排行榜" Widget 到侧栏。 排行数据每日凌晨通过 wp_cron 自动刷新,也可在后台手动触发。 4. 广告模块 自助广告管理系统:11个广告位 + 图片/文字双类型 + 定价体系 + 审核机制 + 用户自助购买。 广告位 首页顶部全宽 — 首页导航下方,流量最大 文章页顶部全宽 — 文章页标题区上方 文章正文开头/中间/底部 — 正文内不同位置插入 侧边栏 — 所有页面右侧(仅PC) 评论区上方 — 文章评论区上方 页脚上方全宽 — 网站底部页脚上方 浮动广告 — 页面右下角浮动窗口,可关闭 弹窗广告 — 进入页面弹窗展示,每次会话仅一次 小工具专用 — 可拖拽到任意小工具区域 使用方法 前往 广告管理 配置各广告位的展示设置(图片/文字类型开关、每行显示数量、图片尺寸等) 设置各广告位的定价方案(按天/按周/按月等) 可开启审核机制:用户购买后需管理员审核通过才能上线 空位自动显示占位符("广告位招租"),支持显示最低价格和购买按钮 用户自助购买 广告模块自动创建前端购买页面,用户可自助选择广告位、上传素材、在线付款。支付通过子比 ZibPay 系统完成。 每个广告位的图片和文字类型可以独立开关和配置,灵活组合使用。 5. 举报模块 支持举报文章、评论、用户三种类型 + 前端弹窗表单 + 后台审核管理。 举报原因 内置 6 种原因分类:垃圾广告、辱骂攻击、色情低俗、欺诈信息、侵犯版权、其他原因。用户可附加详细说明。 前端 启用后,登录用户可通过页面上的举报按钮触发举报弹窗。使用方式:在任意元素上添加 data-zm-report="post" 和 data-zm-report-id="123" 属性。 后台管理 前往 举报管理 筛选状态:待处理 / 已接受 / 已驳回 点击 "接受" 或 "驳回" 处理每条举报,可附加处理备注 同一用户对同一内容的重复举报会被自动拦截,需等待上一条处理完毕。 6. 工单模块 用户提交工单 + 分类/优先级 + 管理员回复 + 站内消息通知。 工单分类与优先级 分类:问题反馈、功能建议、账号问题、支付问题、其他 优先级:低、普通、紧急、非常紧急 状态:待处理 → 已回复 → 已关闭 短代码 — 提交工单表单 — 我的工单列表 使用方法 创建一个页面,内容写入 ,作为用户提交入口 创建另一个页面,内容写入 ,用于用户查看自己的工单 用户提交工单后,管理员在 工单管理 查看和回复 管理员回复时自动通过子比站内消息 zib_message 通知用户 7. 团购模块 文章/资源团购:Meta Box 快速开启 + 前端进度条 + 定时自动过期 + ZibPay 支付集成。 使用方法 编辑任意文章,在右侧栏找到 "🛒 团购设置" 区域 勾选 "开启团购",设置原价、团购价、成团人数、截止时间 发布文章后,团购组件自动显示在文章内容下方 用户通过 ZibPay 支付团购价参团,达到成团人数后自动标记为成功 短代码(可选) 通常无需手动插入,开启团购后文章页会自动展示。可通过短代码手动控制展示位置。 后台管理 前往 团购管理 查看所有团购活动的状态(进行中/已成功/已失败)、参团人数等。 过期的团购会被 wp_cron 每小时自动检查并标记为失败状态。 8. 商城团购模块 面向商城商品(product 类型)的团购功能,自动在商品页注入团购面板。 使用方法 编辑任意商品(product),在右侧栏找到 "商城团购设置" 勾选 "启用团购",设置团购价、最少/最多人数、有效时长(小时) 发布后,商品页底部自动出现团购面板(价格、进度条、参团按钮) 用户余额扣费参团,达到最低人数后自动标记为成功 短代码(可选) 商城团购面板通过 the_content 过滤器自动注入,无需手动插入短代码。 9. 砍价模块 用户发起砍价 → 分享链接给好友 → 好友帮砍随机金额 → 砍到底价后购买。与子比付费阅读价格联动。 使用方法 编辑任意文章,在右侧栏找到 "🔪 砍价设置" 区域 勾选 "开启砍价",原价自动从子比「付费阅读」价格读取 设置底价、总砍价次数、每人帮砍次数、库存数量 可选设置活动开始/结束时间 发布后,砍价组件自动显示在文章内容下方 短代码(可选) 功能特点 活动进行中时文章标题自动添加 "⚡ 砍价中" 前缀标签 支持库存控制:-1 = 不限,0 = 已售罄 支持活动时间控制:可设置开始和结束时间 全局默认值可在 砍价管理 中配置 10. 抽奖模块 大转盘 / 九宫格抽奖 + 概率算法 + 余额/积分扣费发奖 + 每日限次。 创建抽奖 前往 抽奖管理,点击创建 填写活动标题、选择类型(大转盘/九宫格) 设置费用类型(免费/余额/积分)和消费金额 配置奖品列表:每个奖品设置 名称、类型(无奖/余额/积分)、奖品值、概率权重 设置每日限次(0=不限制) 保存后获得抽奖ID 短代码 — 大转盘 — 九宫格 奖品概率说明 概率为相对权重。例如 4 个奖品的概率分别为 40、20、25、1,则谢谢参与概率为 40/86≈46.5%,大奖概率为 1/86≈1.2%。 余额/积分不足时会提示用户。奖品自动通过子比 ZibPay 系统发放到用户账户。 11. 悬赏模块 论坛帖子积分悬赏系统:发帖设置悬赏 → 积分冻结 → 评论回答 → 采纳发放赏金。 使用方法 用户在论坛发帖时勾选 "设置悬赏",输入悬赏金额(积分) 发布后积分自动从用户账户扣除冻结 其他用户通过评论回答问题 发帖者采纳最佳回答,赏金自动发放给回答者 悬赏过期后可选自动奖励给点赞最多的回答 后台设置 前往 悬赏管理,可配置: 默认/最小/最大悬赏金额 悬赏有效期(天) 作者提成比例 / 平台提成比例 过期自动奖励、管理员介入权限 标题悬赏标记、内容悬赏信息框开关 用户中心集成 自动在子比用户中心添加 "我的悬赏" 和 "我的回答" 标签页,含悬赏统计数据。同时提供侧栏小工具。 悬赏基于子比论坛帖子类型 forum_post,需确保论坛功能已开启。 12. 聊天室模块 实时聊天室:多房间 + 撤回 + 禁言 + @提及 + 引用 + 右键菜单 + 表情/图片。 短代码 — 兼容旧插件短代码 每个页面自动创建独立房间,无需手动指定房间ID。height 为聊天区高度(px)。 功能特性 @提及 — 输入 @用户名 或 @全体 通知指定用户 引用回复 — 右键点击消息可引用回复 撤回消息 — 指定分钟内可撤回自己的消息 禁言管理 — 房间管理员可对用户禁言/解除禁言 表情/图片 — 支持子比主题表情包和图片上传 悬浮聊天按钮 — 可选注入到子比右侧悬浮栏,点击弹出聊天面板 Widget 前往 外观 → 小工具,添加 "💬 子比聊天室" Widget。 后台设置 前往 聊天室管理 设置轮询间隔、撤回时限、图片上传开关、快捷短语等 配置房间创建规则和悬浮按钮开关 聊天室通过 AJAX 轮询实现实时通信,轮询间隔可在后台调整(默认3秒)。 13. AI摘要模块 文章发布时自动调用 AI 生成摘要,在文章顶部显示摘要卡片。兼容多种 AI 服务商。 支持的 AI 服务商 OpenAI / DeepSeek / 通义千问 / 豆包 / 智谱GLM / Kimi / 零一万物 / 百度文心(自动兼容不同响应格式) 配置步骤 前往 AI摘要设置 填写 API URL 和 API Key 设置模型名称(如 gpt-3.5-turbo、deepseek-chat 等) 自定义提示词(Prompt),控制摘要风格和长度 选择启用的文章类型(默认仅 post) 勾选 "自动生成" 后,新发布的文章会自动调用AI生成摘要 手动生成 在文章编辑页面侧栏 "AI摘要" MetaBox 中,点击 生成/重新生成 按钮即可。 前端展示 摘要自动以卡片形式插入到文章内容顶部,标注 "🤖 AI摘要" 标签和生成时间。 API Key 请妥善保管。文本超过 3000 字符会自动截断后送入AI处理。 14. AI文章模块 AI自动生成文章 + RSS新闻采集改写 + 自动配图 + 批量入队 + 定时发布。 支持的 AI 服务商 OpenAI / DeepSeek / 通义千问 / 豆包 / 智谱ChatGLM / Kimi / 零一万物 / 百川 / 百度文心 — 内置快速选择预设。 单篇生成 前往 AI文章 配置好 API(URL、Key、模型) 在 "单篇生成" 区输入主题、选择分类和状态(草稿/直接发布) 支持定时发布:选择日期时间后文章将在指定时间发布 点击 "生成文章",AI自动写出标题+正文并创建文章 批量生成 在 "批量生成" 区,每行输入一个主题 选择分类和发布间隔(分钟) 点击 "加入队列",系统通过 wp_cron 按间隔逐篇生成 📰 RSS新闻采集 在 "新闻源配置" 区添加 RSS 源(内置预设:人民网/新华网/36氪/少数派/财联社等) 也可输入任意自定义 RSS URL 启用定时采集:设置频率(每N小时)和每次采集数量 系统自动采集新闻 → AI改写为原创文章 → 自动发布 🖼️ 自动配图 三种图片来源可选: 新闻原图 — 从 RSS 提取原始图片(免费) Unsplash — 根据文章标题自动搜索高质量配图(需填 API Key) AI生图 — 调用 AI 绘图接口生成封面图(需填API地址和Key) 生成日志 页面底部显示所有已生成文章的记录,包括文章链接、主题、模型、消耗Token数。 15. AI工具模块 集成多种 AI 功能:AI文章生成、长尾关键词批量生成、前端 AI 对话窗口、文章采集伪原创、视频生成等。 API 配置 前往 AI工具 → API设置 选择 AI 服务商(支持 OpenAI / 智谱AI / Kimi / DeepSeek 等) 填写对应的 API Key,选择模型 可选:启用"自定义API" 或 "腾讯云 DeepSeek API"(二选一) 保存设置 功能一:长尾关键词生成 前往 关键词生成 页面 输入核心关键词(多个用逗号分隔),设置生成数量 可填写额外要求(如"希望关键词与电商相关") 点击 "生成长尾关键词",AI 会自动调用并返回结果 生成的关键词自动保存到数据库,可直接"生成文章"或批量操作 功能二:AI 文章生成 前往 文章生成 页面 输入主题关键词或自定义内容 选择发布状态、分类、文章长度等参数 点击生成,AI 自动生成标题 + 正文并创建文章 功能三:前端 AI 对话窗口 在 API 设置页勾选 "启用前端交互窗口" 可自定义窗口标题、欢迎消息、CSS/JS 启用后前端会显示一个 AI 对话浮窗,用户可直接与 AI 交互 功能四:定时自动发文 前往 定时任务 页面 设置自动发文的关键词、分类、频率等 启用后系统通过 wp_cron 按设定频率自动生成并发布文章 支持多种 API 服务商:OpenAI、智谱AI(有免费模型)、Kimi(注册送额度)、DeepSeek、自定义API、腾讯云DeepSeek等。 "自定义API" 和 "腾讯云DeepSeek API" 只能二选一,启用一个必须禁用另一个。如需使用默认API,请确保两个功能均处于禁用状态。 16. 字体定制模块 基于 Google Fonts 的全站字体定制,支持按区域独立设置字体和字号,自动排除图标字体影响。 配置方法 前往 子比超级插件 → 字体定制 可分别设置 5 个区域的字体: 全局字体 — 影响整个站点的默认字体 导航栏字体 — 仅影响顶部导航区域 菜单字体 — 仅影响菜单和子菜单 文章内容字体 — 仅影响文章正文区域 标题字体 — 影响 H1~H6 标题,可单独设置 H1/H2/H3 字号 设置步骤 从下拉列表选择 Google 字体(含思源黑体、思源宋体等中文字体) 可选填写字号(px),留空则使用默认大小 点击 "保存设置",前端即时生效 如需清除字体缓存,点击 "清除缓存" 按钮 插件自动排除图标字体(FontAwesome、Dashicons、Iconfont等)的影响,确保修改字体后图标仍能正常显示。 使用 Google Fonts 需确保服务器可访问 fonts.googleapis.com。国内服务器如无法访问,可配合 Google Fonts 镜像代理使用。 常见问题 Q: 启用模块后前端没有效果? A: 检查浏览器缓存和CDN缓存。如果使用了缓存插件(如 WP Super Cache、LiteSpeed Cache),需要清理缓存。 Q: AJAX请求返回 403 或 0? A: 通常是 nonce 过期。确保页面没有被全页缓存(登录用户应跳过缓存),或者检查安全插件是否拦截了 admin-ajax.php。 Q: AI模块调用失败? A: 1) 检查 API Key 是否正确;2) 检查服务器能否访问 API URL(可在服务器终端执行 curl API地址 测试);3) 国内服务器建议使用兼容API代理地址或国内AI服务商。 Q: 数据库表未创建? A: 停用再重新启用插件,会触发 dbDelta 重建表结构。或检查数据库用户是否有 CREATE TABLE 权限。 Q: 卸载插件后数据会删除吗? A: 卸载(删除插件)时会清理所有 wp_zm_* 数据表和 zibll_mega_settings 选项。停用不删数据。 Q: AI工具生成关键词无结果? A: 1) 检查API设置页的API Key是否已填写并保存;2) 查看服务器日志 debug.log 中是否有报错;3) 确保服务器可访问所选的API服务地址;4) "自定义API"和"腾讯云API"只能二选一。 Q: 字体定制设置后前端没效果? A: 1) 检查浏览器缓存和CDN缓存;2) 确保服务器可访问 fonts.googleapis.com;3) 国内服务器可能需要配合Google Fonts镜像代理。 Q: 广告位不显示? A: 1) 检查广告位是否被禁用(后台广告位管理);2) 浮动/弹窗广告需有对应类型的广告素材;3) 清除页面缓存后刷新查看。 Q: 悬赏功能无效? A: 悬赏基于子比论坛帖子类型 forum_post,需要确保子比主题的论坛功能已开启并正常运行。
2026-5-30
4 阅读
0 评论
网站插件
2026-5-29
子比主题必备!超好用的账号切换插件
如果你的网站访客经常需要兼顾多个账号,那么反复的退出与重新登录无疑会严重影响他们的使用体验。 别担心,Zibll 多账号管理插件就是为了解决这个麻烦而设计的!它专为子比主题用户量身打造,不仅能轻松实现账号的绑定与解绑,还能让你在不同账号间实现秒级切换,让多账号的日常管理变得前所未有的顺手。 截图预览 – 支持在用户中心绑定多个账号– 支持一键切换到已绑定账号– 支持 Ctrl + M 快捷键快速打开切换弹窗– 支持设置每个用户最多可绑定账号数量– 支持双向绑定,账号之间管理更方便– 管理员账号默认受保护,避免高权限账号被随意绑定或切换– 后台使用子比主题 / CSF 框架风格,设置简单直观
2026-5-29
14 阅读
0 评论
网站插件
2026-5-29
子比Zibll主题专用工单系统插件V1.1.0版本
子比主题工单系统是一款适配 Zibll 主题的站内客服插件,完美解决用户反馈、售后及资源问题收集需求。它支持用户在线提交工单,并赋予站长后台统一管理与回复的权限,是提升网站服务体验的必备工具。 V1.10修复邮件发送不成功功能完善邮件发送体系修复工单标题异常的问题 截图预览
2026-5-29
4 阅读
0 评论
网站插件
免费获取
2026-5-29
WordPress 子比主题 文章页面自定义按钮插件分享
这款插件是专门为 Zibll 子比主题量身定制的一款轻量级文章页自定义按钮扩展工具。它能够直接在文章详情页底部的操作栏中,灵活添加各类自定义按钮,帮助站长高效地将访客引流至会员开通页、联系方式、资源下载页、活动专区以及其他各类核心页面。 插件预览
2026-5-29
2 阅读
0 评论
网站插件
2026-5-20
告别重复登录:子比主题账号秒切插件
对于拥有多个账号的站长或用户来说,频繁地退出当前账号、再输入密码登录另一个账号,无疑是极其繁琐且低效的操作。为此,专为子比主题量身打造的“Zibll 多账号管理插件”应运而生。这款插件完美解决了多账号来回切换的难题,通过提供便捷的账号绑定、解绑以及一键快速切换功能,让你彻底告别重复登录的烦恼,在多账号之间实现丝滑流转。 插件亮点– 支持在用户中心绑定多个账号– 支持一键切换到已绑定账号– 支持 Ctrl + M 快捷键快速打开切换弹窗– 支持设置每个用户最多可绑定账号数量– 支持双向绑定,账号之间管理更方便– 管理员账号默认受保护,避免高权限账号被随意绑定或切换– 后台使用子比主题 / CSF 框架风格,设置简单直观
2026-5-20
2 阅读
0 评论
网站插件
2026-5-15
高效管理 WordPress 文章分类:批量操作插件(饺子优化+美化)
效果图如下 高效管理 WordPress 文章分类:批量操作插件开发与优化实战在 WordPress 站点运营过程中,文章分类管理是内容维护的核心环节之一。尤其是当站点文章量较大时,逐个修改文章分类不仅效率低下,还容易出现操作失误。基于这一痛点,我们开发了一款「批量更改文章分类」插件,通过实战优化解决了功能实现、样式美化、性能调优等多个核心问题,让分类管理变得高效且便捷。一、插件核心功能设计:解决批量分类管理痛点这款插件的核心目标是实现文章分类的批量操作,覆盖日常运营中最常用的三类需求:批量更改文章分类、批量为文章添加分类、批量从文章中移除分类。为了让操作更贴合实际使用场景,我们在功能设计上做了多维度优化: 精准筛选,快速定位目标文章插件提供了多条件筛选功能,支持按「分类」「关键词」筛选文章,还可根据「发布日期」「修改日期」进行排序。运营者只需设置筛选条件,点击搜索按钮,即可快速定位需要调整分类的文章,避免在海量文章中逐个查找的麻烦。 可视化批量操作,降低操作门槛在插件界面中,左侧为「选择文章」区域,清晰展示文章标题、当前分类等信息,支持全选 / 单选文章;右侧为「选择分类」区域,除了显示分类名称、文章数量外,还新增了「分类 ID」列 —— 分类 ID 是 WordPress 中分类的唯一标识,显示该信息能帮助开发者或高级运营者精准定位分类,避免因分类名称重复导致的操作错误。 分页优化,提升大数据量处理体验考虑到站点可能存在大量文章,我们将分页按钮(上一页 / 下一页)从文章表格下方调整至「选择文章」标题右侧,既节省了页面空间,又让分页操作更贴近视觉焦点,大幅提升了大数据量下的操作流畅度。 二、界面美化升级,兼顾视觉与实用性为提升操作体验,我们对插件界面进行了精细化美化:顶部标题模块采用三色渐变背景(#2563eb → #4f46e5 → #7c3aed),搭配半透明圆形装饰和柔和阴影,视觉层次更丰富;按钮、表格等元素统一使用圆角和渐变样式,操作区域区分清晰,降低视觉疲劳;提示框、加载动画等交互元素的优化,让操作反馈更直观,避免用户因等待而重复操作。 细节打磨,适配不同使用场景权限校验:仅赋予「编辑文章」权限的用户访问插件,保障站点数据安全;容错处理:批量操作时校验文章和分类选择状态,若未选择则给出清晰提示,避免无效请求;设置灵活:支持自定义「每页显示文章数量」(1-100 可调),适配不同服务器性能和操作习惯。三、插件使用场景与价值这款插件适用于各类 WordPress 内容站点,尤其是资讯站、博客、文档站等文章量较大的场景:站点改版时,批量调整历史文章的分类体系;内容整理时,为同一主题的文章批量添加标签类分类;清理无效分类时,批量移除文章中的废弃分类。相比手动操作,插件将分类调整效率提升了数倍,同时避免了人工操作的疏漏,让内容运营者能将更多精力投入到内容创作而非重复劳动中。 代码如下 代码也是从网络搜集而来 我只是把功能优化了一下 美化了一下设置页面放到这个文件 /wp-content/plugins <?php /** * Plugin Name: 饺子批量更改文章分类工具 * Plugin URI: https://bk.yykbk.com/ * Version: 1.0.4 * Author: 开发者 * Author URI: https://bk.yykbk.com/ * Text Domain: batch-category-editor * License: GPL2 */ // ===================== 第一步:终极拦截 - 定义所有缺失的旧函数(空函数) ===================== // 直接定义所有被调用的旧函数,让WordPress调用时不会报错 function bcat_add_admin_page() {} function bcat_add_config_page() {} function bcat_register_settings() {} function bcat_script_action() {} // ===================== 第二步:立即清理所有旧钩子(最高优先级) ===================== function bce_final_cleanup() { global $wp_filter, $wpdb; // 1. 定义所有要清理的旧函数名 $old_functions = ; // 2. 遍历所有钩子,删除包含旧函数的回调 foreach ($wp_filter as $hook_name => $callbacks) { if (isset($wp_filter)) { foreach ($wp_filter as $priority => $callback_group) { foreach ($callback_group as $callback_id => $callback) { // 清理直接调用的函数 if (is_string($callback) && in_array($callback, $old_functions)) { unset($wp_filter); } // 清理数组形式的回调 elseif (is_array($callback) && isset($callback) && in_array($callback, $old_functions)) { unset($wp_filter); } } } } } // 3. 强制清理WordPress菜单缓存和所有临时数据 delete_transient('wp_menu_cache'); wp_cache_flush(); $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '%_transient_%'"); // 4. 禁用PHP错误输出(彻底隐藏剩余警告) error_reporting(0); ini_set('display_errors', 0); ini_set('log_errors', 1); // 5. 启动输出缓冲,防止headers already sent错误 if (!ob_get_level()) { ob_start(); } } // 插件加载时立即执行(最早的时机) add_action('muplugins_loaded', 'bce_final_cleanup', -99999); add_action('plugins_loaded', 'bce_final_cleanup', -99999); add_action('init', 'bce_final_cleanup', -99999); // ===================== 第三步:核心功能实现(完全独立,无任何旧函数) ===================== // 1. 注册菜单 function bce_add_menu() { add_management_page( '批量更改文章分类', '批量更改文章分类', 'edit_posts', 'batch-category-editor', 'bce_render_page' ); } add_action('admin_menu', 'bce_add_menu', 999); // 2. 注册设置和AJAX function bce_register_hooks() { // 注册设置 register_setting( 'bce_options_group', 'bce_options', [ 'sanitize_callback' => 'bce_validate_settings', 'default' => ] ); // 注册AJAX处理 add_action('wp_ajax_bce_set_cat', 'bce_ajax_set_cat'); add_action('wp_ajax_bce_add_cat', 'bce_ajax_add_cat'); add_action('wp_ajax_bce_del_cat', 'bce_ajax_del_cat'); // 确保选项存在 if (!get_option('bce_options')) { add_option('bce_options', ); } } add_action('admin_init', 'bce_register_hooks'); // 3. 验证设置 function bce_validate_settings($input) { $valid = ; $valid = isset($input) && is_numeric($input) ? (intval($input) >= 1 && intval($input) <= 100 ? intval($input) : 15) : 15; return $valid; } // 4. 主页面渲染(功能完整+美化) function bce_render_page() { // 权限检查 if (!current_user_can('edit_posts')) { wp_die( '<div style="font-family: -apple-system, BlinkMacSystemFont, sans-serif; padding:50px; background:#f8fafc;"> <div style="max-width:600px; margin:0 auto; background:white; padding:40px; border-radius:12px; box-shadow:0 4px 20px rgba(0,0,0,0.05);"> <h1 style="color:#dc2626; font-size:28px; margin-bottom:20px;">权限不足</h1> <p style="font-size:16px; line-height:1.8; color:#475569;">您需要具备编辑文章的权限才能访问此页面。</p> <p style="margin-top:30px;"> <a href="'.admin_url().'" style="padding:10px 25px; background:#3b82f6; color:white; text-decoration:none; border-radius:8px; font-weight:600;">返回后台首页</a> </p> </div> </div>', '权限不足', ); } // 获取参数 $current_cat = isset($_GET) ? intval($_GET) : -1; $current_keyword = isset($_GET) ? esc_attr($_GET) : ''; $current_sort = isset($_GET) ? $_GET : 'post_date'; $current_order = isset($_GET) ? $_GET : 'desc'; $options = get_option('bce_options', ); $per_page = intval($options) ?: 15; $paged = isset($_GET) ? max(1, intval($_GET)) : 1; // 构建文章查询 $args = [ 'post_type' => 'post', 'posts_per_page' => $per_page, 'paged' => $paged, 'post_status' => 'publish', 'orderby' => $current_sort, 'order' => $current_order ]; if (!empty($current_keyword)) $args = sanitize_text_field($current_keyword); if ($current_cat > 0) $args = $current_cat; $query = new WP_Query($args); $posts = $query->posts; // 获取分类列表 $categories = get_categories([ 'type' => 'post', 'hide_empty' => 0, 'orderby' => 'name', 'order' => 'ASC' ]); // 禁用自动添加的保存按钮 remove_action('admin_notices', 'settings_errors'); ?> <div class="wrap" style="max-width:1400px; margin:0 auto; padding:20px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"> <!-- 顶部标题 - 美化背景样式 --> <div style="background: linear-gradient(135deg, #2563eb 0%, #4f46e5 50%, #7c3aed 100%); color:white; padding:30px 40px; border-radius:16px; margin-bottom:30px; box-shadow:0 12px 30px rgba(37, 99, 235, 0.25); position:relative; overflow:hidden;"> <!-- 装饰元素 --> <div style="position:absolute; top:-50px; right:-50px; width:200px; height:200px; background:rgba(255,255,255,0.1); border-radius:50%;"></div> <div style="position:absolute; bottom:-30px; left:-30px; width:150px; height:150px; background:rgba(255,255,255,0.08); border-radius:50%;"></div> <div style="position:relative; z-index:1;"> <h1 style="font-size:36px; margin:0; font-weight:700; letter-spacing:0.8px; text-shadow:0 2px 10px rgba(0,0,0,0.1);">批量更改文章分类工具</h1> <p style="font-size:18px; margin:12px 0 0 0; opacity:0.95; line-height:1.6; text-shadow:0 1px 5px rgba(0,0,0,0.1);">高效管理您的文章分类,支持批量修改、添加、删除操作</p> </div> </div> <!-- 标签页 --> <div style="margin-bottom:25px; display:flex; gap:8px;"> <button class="bce-tab-btn active" data-tab="main" style="padding:12px 30px; background: linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%); color:white; border:none; border-radius:8px; cursor:pointer; font-size:16px; font-weight:600; transition:all 0.3s ease; box-shadow:0 4px 12px rgba(59, 130, 246, 0.15);"> 批量操作 </button> <button class="bce-tab-btn" data-tab="settings" style="padding:12px 30px; background:#f8fafc; color:#1e40af; border:1px solid #dbeafe; border-radius:8px; cursor:pointer; font-size:16px; font-weight:600; transition:all 0.3s ease;"> 显示设置 </button> </div> <!-- 批量操作区 --> <div id="bce-tab-main" class="bce-tab-content" style="display:block; background: linear-gradient(180deg, #f0f7ff 0%, #f8fafc 100%); padding:25px; border-radius:12px; box-shadow:0 4px 20px rgba(0, 0, 0, 0.05); border:1px solid #e0e7ff;"> <!-- 搜索区域 --> <div style="background:white; padding:25px; border-radius:10px; box-shadow:0 2px 10px rgba(0, 0, 0, 0.03); margin-bottom:25px;"> <div style="display:flex; flex-wrap:wrap; gap:20px; align-items:center;"> <div> <label style="font-weight:600; color:#1e40af; margin-right:10px; font-size:15px;">选择分类:</label> <?php wp_dropdown_categories([ 'id' => 'bce-cat-filter', 'hide_empty' => 0, 'hierarchical' => 1, 'selected' => $current_cat, 'show_option_all' => '所有分类', 'style' => 'padding:10px 15px; border:2px solid #e0e7ff; border-radius:8px; font-size:14px; min-width:200px;' ]); ?> </div> <div> <label for="bce-keyword" style="font-weight:600; color:#1e40af; margin-right:10px; font-size:15px;">关键词:</label> <input type="text" id="bce-keyword" value="<?php echo $current_keyword; ?>" style="padding:10px 15px; border:2px solid #e0e7ff; border-radius:8px; width:220px; font-size:14px;" onfocus="this.style.borderColor='#3b82f6';" onblur="this.style.borderColor='#e0e7ff';"> </div> <div> <label for="bce-sort-by" style="font-weight:600; color:#1e40af; margin-right:10px; font-size:15px;">排序:</label> <select id="bce-sort-by" style="padding:10px 15px; border:2px solid #e0e7ff; border-radius:8px; font-size:14px;"> <option value="post_date" <?php selected($current_sort, 'post_date'); ?>>发布日期</option> <option value="modified" <?php selected($current_sort, 'modified'); ?>>修改日期</option> </select> </div> <div style="display:flex; align-items:center; gap:15px;"> <label style="font-weight:600; color:#1e40af; margin-right:8px; font-size:15px;">升序:</label> <input type="radio" name="bce-sort-order" value="asc" <?php checked($current_order, 'asc'); ?> style="width:18px; height:18px; cursor:pointer;"> <label style="font-weight:600; color:#1e40af; margin-left:15px; margin-right:8px; font-size:15px;">降序:</label> <input type="radio" name="bce-sort-order" value="desc" <?php checked($current_order, 'desc'); ?> style="width:18px; height:18px; cursor:pointer;"> </div> <div> <button id="bce-search-btn" style="padding:10px 25px; background: linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%); color:white; border:none; border-radius:8px; cursor:pointer; font-weight:600; font-size:15px; transition:all 0.3s ease; box-shadow:0 4px 12px rgba(59, 130, 246, 0.15);"> 搜索 </button> </div> </div> </div> <!-- 列表区域 --> <div style="display:flex; gap:25px;"> <!-- 文章列表 --> <div style="flex:1; background:white; padding:20px; border-radius:10px; box-shadow:0 2px 10px rgba(0, 0, 0, 0.03);"> <!-- 选择文章标题 + 分页(移到标题后方) --> <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;"> <h2 style="color:#1e40af; font-size:20px; margin:0; font-weight:600; padding-bottom:10px; border-bottom:2px solid #e0e7ff;">选择文章</h2> <?php if ($query->max_num_pages > 1) : ?> <div style="padding:8px 15px; background:#f8fafc; border-radius:8px;"><?php echo paginate_links([ 'base' => add_query_arg('paged', '%#%'), 'total' => $query->max_num_pages, 'current' => $paged, 'prev_text' => '← 上一页', 'next_text' => '下一页 →', 'mid_size' => 2, 'prev_next' => true ]); ?></div> <?php endif; ?> </div> <table class="widefat" style="width:100%; border-collapse:collapse; border-radius:8px; overflow:hidden; box-shadow:0 2px 8px rgba(0,0,0,0.05);"> <thead> <tr style="background: linear-gradient(135deg, #e0f2fe 0%, #f0f7ff 100%);"> <th style="padding:12px 15px; border:1px solid #e0e7ff; font-size:15px;"><input type="checkbox" id="bce-select-all-posts" style="width:18px; height:18px; cursor:pointer;"></th> <th style="padding:12px 15px; border:1px solid #e0e7ff; font-weight:600; color:#1e40af; font-size:15px;">标题</th> <th style="padding:12px 15px; border:1px solid #e0e7ff; font-weight:600; color:#1e40af; font-size:15px;">当前分类</th> </tr> </thead> <tbody> <?php if (empty($posts)) : ?> <tr><td colspan="3" style="padding:30px; text-align:center; border:1px solid #e0e7ff; font-size:16px; color:#64748b;">暂无文章</td></tr> <?php else : ?> <?php foreach ($posts as $i => $post) : ?> <tr style="<?php echo $i%2 ? 'background:#f8fafc;' : 'background:white;'; ?>"> <td style="padding:12px 15px; border:1px solid #e0e7ff; font-size:14px;"><input type="checkbox" class="bce-post-check" name="post_ids" value="<?php echo $post->ID; ?>" style="width:16px; height:16px; cursor:pointer;"></td> <td style="padding:12px 15px; border:1px solid #e0e7ff; font-size:14px;"><a href="<?php echo get_edit_post_link($post->ID); ?>" style="color:#2563eb; text-decoration:none; font-weight:500;"><?php echo esc_html($post->post_title ?: '无标题'); ?></a></td> <td style="padding:12px 15px; border:1px solid #e0e7ff; font-size:14px; color:#475569;"> <?php $cats = wp_get_post_categories($post->ID); $cat_names = ; foreach ($cats as $cat_id) { $cat = get_category($cat_id); if ($cat) $cat_names = $cat->name; } echo empty($cat_names) ? '<span style="color:#94a3b8; font-style:italic;">未分类</span>' : implode('、', $cat_names); ?> </td> </tr> <?php endforeach; ?> <?php endif; ?> </tbody> </table> </div> <!-- 分类列表 - 新增分类ID列 --> <div style="flex:1; background:white; padding:20px; border-radius:10px; box-shadow:0 2px 10px rgba(0, 0, 0, 0.03);"> <h2 style="color:#1e40af; font-size:20px; margin-bottom:20px; font-weight:600; margin-top:0; padding-bottom:10px; border-bottom:2px solid #e0e7ff;">选择分类</h2> <div style="margin-bottom:20px; padding:20px; background:#f8fafc; border-radius:10px; box-shadow:0 2px 8px rgba(0,0,0,0.05);"> <button id="bce-set-btn" style="padding:12px 25px; background: linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%); color:white; border:none; border-radius:8px; cursor:pointer; margin-right:12px; font-weight:600; font-size:15px; transition:all 0.3s ease; box-shadow:0 4px 12px rgba(59, 130, 246, 0.15);"> 更改文章分类 </button> <button id="bce-add-btn" style="padding:12px 25px; background: linear-gradient(135deg, #10b981 0%, #34d399 100%); color:white; border:none; border-radius:8px; cursor:pointer; margin-right:12px; font-weight:600; font-size:15px; transition:all 0.3s ease; box-shadow:0 4px 12px rgba(16, 185, 129, 0.15);"> 添加分类 </button> <button id="bce-del-btn" style="padding:12px 25px; background: linear-gradient(135deg, #ef4444 0%, #f87171 100%); color:white; border:none; border-radius:8px; cursor:pointer; font-weight:600; font-size:15px; transition:all 0.3s ease; box-shadow:0 4px 12px rgba(239, 68, 68, 0.15);"> 删除分类 </button> </div> <table class="widefat" style="width:100%; border-collapse:collapse; border-radius:8px; overflow:hidden; box-shadow:0 2px 8px rgba(0,0,0,0.05);"> <thead> <tr style="background: linear-gradient(135deg, #e0f2fe 0%, #f0f7ff 100%);"> <th style="padding:12px 15px; border:1px solid #e0e7ff; font-size:15px;"><input type="checkbox" id="bce-select-all-cats" style="width:18px; height:18px; cursor:pointer;"></th> <th style="padding:12px 15px; border:1px solid #e0e7ff; font-weight:600; color:#1e40af; font-size:15px;">分类名称</th> <th style="padding:12px 15px; border:1px solid #e0e7ff; font-weight:600; color:#1e40af; font-size:15px;">分类ID</th> <th style="padding:12px 15px; border:1px solid #e0e7ff; font-weight:600; color:#1e40af; font-size:15px;">文章数量</th> </tr> </thead> <tbody> <?php if (empty($categories)) : ?> <tr><td colspan="4" style="padding:30px; text-align:center; border:1px solid #e0e7ff; font-size:16px; color:#64748b;">暂无分类</td></tr> <?php else : ?> <?php foreach ($categories as $i => $cat) : ?> <tr style="<?php echo $i%2 ? 'background:#f8fafc;' : 'background:white;'; ?>"> <td style="padding:12px 15px; border:1px solid #e0e7ff; font-size:14px;"><input type="checkbox" class="bce-cat-check" name="cat_ids" value="<?php echo $cat->term_id; ?>" style="width:16px; height:16px; cursor:pointer;"></td> <td style="padding:12px 15px; border:1px solid #e0e7ff; font-size:14px;"><a href="<?php echo get_edit_term_link($cat->term_id, 'category'); ?>" style="color:#2563eb; text-decoration:none; font-weight:500;"><?php echo esc_html($cat->name); ?></a></td> <td style="padding:12px 15px; border:1px solid #e0e7ff; font-size:14px; color:#7c3aed; font-weight:600;"><?php echo $cat->term_id; ?></td> <td style="padding:12px 15px; border:1px solid #e0e7ff; font-size:14px; color:#10b981; font-weight:600;"><?php echo $cat->count; ?></td> </tr> <?php endforeach; ?> <?php endif; ?> </tbody> </table> </div> </div> </div> <!-- 设置区域 --> <div id="bce-tab-settings" class="bce-tab-content" style="display:none; background: linear-gradient(180deg, #f5fafe 0%, #eaf6fa 100%); padding:30px; border-radius:12px; box-shadow:0 4px 20px rgba(0, 0, 0, 0.05); border:1px solid #e0f2fe;"> <div style="max-width:800px; margin:0 auto; background:white; padding:40px; border-radius:12px; box-shadow:0 5px 20px rgba(0,0,0,0.06);"> <h2 style="color:#1e40af; font-size:24px; margin-bottom:30px; font-weight:700; padding-bottom:20px; border-bottom:2px solid #e0f2fe; text-align:center;">插件设置</h2> <form method="post" action="options.php" style="width:100%;"> <?php settings_fields('bce_options_group'); ?> <div style="background: linear-gradient(180deg, #f5fafe 0%, #eaf6fa 100%); padding:30px; border-radius:10px; margin-bottom:30px; border:1px solid #e0f2fe;"> <h3 style="color:#1e40af; font-size:18px; margin-top:0; margin-bottom:20px; font-weight:600;">显示设置</h3> <div style="display:flex; align-items:center; gap:20px; flex-wrap:wrap;"> <label style="font-weight:600; color:#1e293b; font-size:16px; min-width:180px;"> 每页显示文章数量 </label> <div style="flex:1; min-width:200px;"> <input type="number" name="bce_options" value="<?php echo esc_attr($options ?? 15); ?>" min="1" max="100" step="1" style="padding:14px 20px; border:2px solid #e0e7ff; border-radius:8px; width:120px; font-size:16px;" onfocus="this.style.borderColor='#3b82f6'; this.style.boxShadow='0 0 0 4px rgba(59, 130, 246, 0.1)';" onblur="this.style.borderColor='#e0e7ff'; this.style.boxShadow='none';" /> <div style="margin-top:12px; color:#64748b; font-size:14px; line-height:1.6;"> <p style="margin:0;">建议值:10-50</p> <p style="margin:5px 0 0 0;">数值过大会影响页面加载速度,过小则需要频繁翻页</p> </div> </div> </div> </div> <div style="text-align:center; margin-top:20px;"> <?php submit_button('保存设置', 'primary', '', false, [ 'style' => 'padding:14px 40px; background: linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%); color:white; border:none; border-radius:8px; font-size:18px; font-weight:600; cursor:pointer; transition:all 0.3s ease; box-shadow:0 6px 16px rgba(59, 130, 246, 0.2);' ]); ?> </div> </form> <div style="margin-top:30px; padding:20px; background:#f0f7ff; border-radius:8px; border-left:4px solid #3b82f6;"> <h4 style="color:#1e40af; font-size:16px; margin-top:0; margin-bottom:10px; font-weight:600;">使用提示</h4> <ul style="margin:0; padding-left:20px; color:#475569; font-size:14px; line-height:1.8;"> <li>修改设置后需要点击"保存设置"按钮生效</li> <li>建议根据服务器性能调整每页显示数量</li> <li>所有操作都会实时生效,请谨慎选择文章和分类</li> </ul> </div> </div> </div> </div> <!-- JS脚本(功能完整) --> <script> jQuery(document).ready(function($) { // 标签页切换 $('.bce-tab-btn').click(function() { $('.bce-tab-btn').removeClass('active').css({ background: '#f8fafc', color: '#1e40af', border: '1px solid #dbeafe', boxShadow: 'none' }); $(this).addClass('active').css({ background: 'linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%)', color: 'white', border: 'none', boxShadow: '0 4px 12px rgba(59, 130, 246, 0.15)' }); $('.bce-tab-content').hide(); $('#bce-tab-' + $(this).data('tab')).show(); }); // 全选功能 $('#bce-select-all-posts').click(function() { $('.bce-post-check').prop('checked', this.checked); }); $('#bce-select-all-cats').click(function() { $('.bce-cat-check').prop('checked', this.checked); }); // 搜索功能 $('#bce-search-btn').click(function() { const cat = $('#bce-cat-filter').val(); const keyword = $('#bce-keyword').val(); const sort = $('#bce-sort-by').val(); const order = $('input:checked').val(); let url = '<?php echo admin_url('tools.php?page=batch-category-editor'); ?>'; const params = ; if (cat && cat != -1) params.push('cat=' + cat); if (keyword) params.push('s=' + encodeURIComponent(keyword)); if (sort) params.push('sort=' + sort); if (order) params.push('order=' + order); if (params.length) url += '&' + params.join('&'); window.location.href = url; }); // 提示框 function showToast(msg, isSuccess = true) { const toast = $('<div style="position:fixed; top:30px; right:30px; padding:18px 25px; border-radius:10px; background:white; box-shadow:0 8px 24px rgba(0,0,0,0.12); z-index:9999; display:flex; align-items:center; gap:12px; border-left:4px solid #22c55e;"></div>'); const icon = isSuccess ? '<span style="color:#22c55e; font-size:24px; font-weight:bold;">✓</span>' : '<span style="color:#ef4444; font-size:24px; font-weight:bold;">✕</span>'; if (!isSuccess) toast.css('border-left-color', '#ef4444'); toast.html(icon + '<span style="font-size:16px; color:#1e293b;">' + msg + '</span>'); $('body').append(toast); toast.hide().fadeIn(300); setTimeout(() => toast.fadeOut(300, () => toast.remove()), 4000); } // 加载动画 function showLoader() { const loader = $('<div style="position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(255,255,255,0.9); z-index:9998; display:flex; justify-content:center; align-items:center;"><div style="background:white; padding:40px; border-radius:12px; text-align:center; box-shadow:0 10px 30px rgba(0,0,0,0.1);"><div style="width:60px; height:60px; border:6px solid #f0f7ff; border-top:6px solid #3b82f6; border-radius:50%; animation:spin 1s linear infinite; margin:0 auto;"></div><p style="margin-top:25px; font-size:18px; color:#1e40af; font-weight:600;">处理中...</p></div></div>'); $('body').append(loader); $('head').append('<style>@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }</style>'); return loader; } // 分类操作 function doAction(action) { const postIds = $('.bce-post-check:checked').map(function() { return $(this).val(); }).get(); const catIds = $('.bce-cat-check:checked').map(function() { return $(this).val(); }).get(); if (postIds.length === 0) { showToast('请选择至少一篇文章', false); return; } if (catIds.length === 0) { showToast('请选择至少一个分类', false); return; } const loader = showLoader(); $.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'POST', dataType: 'json', data: { action: 'bce_' + action + '_cat', post_ids: postIds.join(','), cat_ids: catIds.join(',') }, success: function(res) { if (res && res.success) { showToast(res.data.msg); setTimeout(() => window.location.reload(), 1500); } else { showToast(res ? (res.data.msg || '操作失败') : '操作失败', false); } }, error: function() { showToast('网络错误,请重试', false); }, complete: function() { loader.remove(); } }); } // 绑定按钮 $('#bce-set-btn').click(function() { doAction('set'); }); $('#bce-add-btn').click(function() { doAction('add'); }); $('#bce-del-btn').click(function() { doAction('del'); }); }); </script> <?php } // ===================== AJAX处理函数(功能完整) ===================== function bce_ajax_set_cat() { if (!current_user_can('edit_posts')) { wp_send_json_error(); } $post_ids = isset($_POST) ? array_map('intval', explode(',', sanitize_text_field($_POST))) : ; $cat_ids = isset($_POST) ? array_map('intval', explode(',', sanitize_text_field($_POST))) : ; if (empty($post_ids) || empty($cat_ids)) { wp_send_json_error(); } foreach ($post_ids as $post_id) { wp_set_post_categories($post_id, $cat_ids); } wp_send_json_success(); } function bce_ajax_add_cat() { if (!current_user_can('edit_posts')) { wp_send_json_error(); } $post_ids = isset($_POST) ? array_map('intval', explode(',', sanitize_text_field($_POST))) : ; $cat_ids = isset($_POST) ? array_map('intval', explode(',', sanitize_text_field($_POST))) : ; if (empty($post_ids) || empty($cat_ids)) { wp_send_json_error(); } foreach ($post_ids as $post_id) { $current_cats = wp_get_post_categories($post_id); $new_cats = array_unique(array_merge($current_cats, $cat_ids)); wp_set_post_categories($post_id, $new_cats); } wp_send_json_success(); } function bce_ajax_del_cat() { if (!current_user_can('edit_posts')) { wp_send_json_error(); } $post_ids = isset($_POST) ? array_map('intval', explode(',', sanitize_text_field($_POST))) : ; $cat_ids = isset($_POST) ? array_map('intval', explode(',', sanitize_text_field($_POST))) : ; if (empty($post_ids) || empty($cat_ids)) { wp_send_json_error(); } $default_cat = get_option('default_category'); foreach ($post_ids as $post_id) { $current_cats = wp_get_post_categories($post_id); $new_cats = array_diff($current_cats, $cat_ids); if (empty($new_cats)) { $new_cats = ; } wp_set_post_categories($post_id, $new_cats); } wp_send_json_success(); } // ===================== 插件停用清理 ===================== register_deactivation_hook(__FILE__, function() { global $wpdb; $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'bce_%'"); delete_transient('wp_menu_cache'); wp_cache_flush(); }); ?> 百度一下
2026-5-15
2 阅读
0 评论
网站插件
2026-5-15
速看-子比主题视频播放器(插件版)
核心功能 – ✅ **视频点播**:通过文章/页面设置轻松添加视频 – ✅ **播放列表**:支持多个视频组成播放列表,自动播放下一集 – ✅ **多源切换**:支持多个视频源,用户可以自由切换 – ✅ **响应式设计**:自适应各种屏幕尺寸,支持移动端播放 – ✅ **键盘快捷键**:支持空格键播放/暂停,方向键快进/快退和音量控制 – ✅ **视频播放**:支持MP4格式的视频文件直接播放 – ✅ **可视化设置**:无需短代码,在文章编辑页直接设置 安装教程 1. 下载插件压缩包2. 登录WordPress后台,进入“插件”->“添加新插件”3. 点击“上传插件”,选择下载的压缩包4. 安装并激活插件 使用方法 1、基本视频播放 1. 新建或编辑文章/页面 2. 在右侧属性区域找到“子比视频播放器设置” 3. 勾选“启用视频播放器” 4. 选择“单个视频”类型 5. 输入视频URL和封面图片URL 6. 设置播放器宽度、高度等参数 7. 发布文章即可自动播放视频 2、视频播放列表 1. 新建或编辑文章/页面 2. 在右侧属性区域找到“子比视频播放器设置” 3. 勾选“启用视频播放器” 4. 选择“播放列表”类型 5. 输入视频ID列表(用逗号分隔) 6. 发布文章即可看到播放列表 3、多源视频播放列表 1. 新建或编辑文章/页面 2. 在右侧属性区域找到“子比视频播放器设置” 3. 勾选“启用视频播放器” 4. 选择“多源视频”类型 5. 输入JSON格式的视频源配置 6. 发布文章即可支持多源切换 设置参数 通用设置 – **启用视频播放器**:是否在当前文章/页面中启用视频播放器 – **视频类型**:单个视频、播放列表、多源视频 – **播放器宽度**:设置播放器宽度(支持百分比和像素) – **播放器高度**:设置播放器高度(支持像素值) – **自动播放**:是否自动播放视频 – **循环播放**:是否循环播放视频 – **静音播放**:是否静音播放视频 单个视频播放设置 -**视频URL**:视频文件的URL地址 – **封面图片URL**:视频封面图片的URL地址 视频播放列表 – **视频ID列表**:WordPress媒体库中的视频ID,用逗号分隔 多源播放视频 – **多源视频配置**:JSON格式的视频源配置 [{"src":"mp4视频链接","label":"1080P"},{"src":"mp4视频链接","label":"720P"}]
2026-5-15
2 阅读
0 评论
网站插件
1
2
3