概述
本文档详细记录了子比主题 (Zibll) 可用的各种资源,包括钩子、函数、类、数据库表、配置选项等,供插件开发使用。
一、核心钩子 (Hooks)
1.1 Action Hooks (动作钩子)
支付相关钩子
– `payment_order_success` – 支付成功时触发
– `order_created` – 订单创建时触发
– `order_closed` – 订单关闭时触发
– `order_refunded` – 订单退款时触发
– `zib_auto_clear_order` – 自动清理订单时触发
用户相关钩子
– `user_register` – 用户注册时触发
– `user_checkined` – 用户签到完成时触发
– `like-posts` – 用户点赞文章时触发
– `favorite-posts` – 用户收藏文章时触发
– `follow-user` – 用户关注其他用户时触发
内容相关钩子
– `save_post` – 保存文章时触发
– `comment_post` – 发表评论时触发
– `comment_unapproved_to_approved` – 评论审核通过时触发
– `like-comment` – 点赞评论时触发
社区论坛钩子
– `bbs_score_extra` – 帖子被加分时触发
– `bbs_posts_essence_set` – 帖子设为精华时触发
– `posts_is_hot` – 帖子成为热门时触发
– `plate_is_hot` – 版块成为热门时触发
– `comment_is_hot` – 评论成为热门时触发
– `answer_adopted` – 回答被采纳时触发
提现相关钩子
– `user_apply_withdraw` – 用户申请提现时触发
– `withdraw_process_newmsg` – 提现处理有新消息时触发
– `withdraw_process` – 提现处理时触发
其他重要钩子
– `admin_init` – 后台初始化时触发
– `template_redirect` – 模板重定向时触发
– `wp_footer` – 页面底部输出时触发
– `wp_login` – 用户登录时触发
1.2 Filter Hooks (过滤器钩子)
支付相关过滤器
– `zibpay_payment_methods` – 支付方式过滤器
– `zibpay_is_allow_balance_pay` – 是否允许余额支付
– `zibpay_is_allow_card_pass_pay` – 是否允许卡密支付
– `pay_order_price_is_allow_0` – 是否允许订单金额为0
用户中心过滤器
– `user_center_page_sidebar` – 用户中心侧边栏
– `user_ctnter_main_tabs_array` – 用户中心主标签页
– `main_user_tab_content_*` – 用户中心各标签页内容
– `user_order_list_card` – 用户订单列表卡片
– `user_order_details_modal` – 用户订单详情弹窗
内容显示过滤器
– `zibpay_posts_paid_box` – 已付费文章显示框
– `zibpay_posts_pay_box` – 付费文章支付框
– `zibpay_is_show_paybutton` – 是否显示支付按钮
作者页面过滤器
– `author_header_more_btn` – 作者头部更多按钮
– `author_header_identity` – 作者身份标识
– `author_main_tabs_array` – 作者主页标签页
– `author_main_tab_*` – 作者主页各标签页内容
– `author_favorite_lists_*` – 作者收藏列表
二、核心函数 (Functions)
2.1 主题核心函数
– `_pz()` – 获取主题选项值
– `zib_get_option()` – 获取主题选项值
– `zib_get_admin_csf_url()` – 获取主题设置链接
– `zib_send_json_success()` – 发送成功JSON响应
– `zib_send_json_error()` – 发送错误JSON响应
2.2 支付相关函数
– `zibpay_initiate_pay()` – 发起支付
– `zibpay_get_order_status()` – 获取订单状态
– `zibpay_get_user_balance()` – 获取用户余额
– `zibpay_get_user_points()` – 获取用户积分
– `zibpay_get_user_vip_level()` – 获取用户VIP等级
2.3 用户相关函数
– `zib_get_user_center_url()` – 获取用户中心链接
– `zib_get_user_cover_img()` – 获取用户封面图片
– `zib_get_user_desc()` – 获取用户描述
– `zib_get_author_header_btns()` – 获取作者头部按钮
2.4 内容相关函数
– `zib_get_main_tab_nav()` – 获取主标签页导航
– `zib_get_ajax_ajaxpager_one_centent()` – 获取AJAX分页内容
– `zib_get_time_where_sql()` – 获取时间条件SQL
2.5 工具函数
– `zib_require()` – 安全引入文件
– `zib_mail_to_admin()` – 发送邮件给管理员
– `zib_get_svg()` – 获取SVG图标
三、核心类 (Classes)
3.1 订单管理类
“`php
class ZibOrder {
// 订单管理核心类
public static function create_db() // 创建订单表
public static function get_row() // 获取订单行
public static function update_order() // 更新订单
public static function payment_order() // 支付订单
public static function close_order() // 关闭订单
public static function refund_order() // 退款订单
}
“`
3.2 卡密管理类
“`php
class ZibCardPass {
// 卡密管理类
public static function create_db() // 创建卡密表
public static function get_row() // 获取卡密行
public static function update() // 更新卡密
public static function use_card() // 使用卡密
}
“`
3.3 消息管理类
“`php
class ZibMsg {
// 消息管理类
public static function create_db() // 创建消息表
public static function add() // 添加消息
public static function get_row() // 获取消息行
public static function get_count() // 获取消息数量
}
“`
3.4 数据库操作类
“`php
class ZibDb {
// 数据库操作类
public static function name() // 指定表名
public static function where() // 添加条件
public static function get() // 获取数据
public static function update() // 更新数据
public static function insert() // 插入数据
public static function delete() // 删除数据
}
“`
四、数据库表结构
4.1 核心数据表
zibpay_order (订单表)
– `id` – 订单ID
– `user_id` – 用户ID
– `order_num` – 订单号
– `order_type` – 订单类型
– `order_price` – 订单金额
– `status` – 订单状态
– `create_time` – 创建时间
– `pay_time` – 支付时间
zibpay_order_meta (订单元数据表)
– `meta_id` – 元数据ID
– `order_id` – 订单ID
– `meta_key` – 元数据键
– `meta_value` – 元数据值
zibpay_card_password (卡密表)
– `id` – 卡密ID
– `card` – 卡号
– `password` – 密码
– `type` – 卡密类型
– `status` – 状态
– `create_time` – 创建时间
zib_message (消息表)
– `id` – 消息ID
– `send_user` – 发送用户
– `receive_user` – 接收用户
– `type` – 消息类型
– `title` – 消息标题
– `content` – 消息内容
– `status` – 消息状态
五、主题配置选项
5.1 主要配置分类
– **全局&功能** – 基础主题设置
– **页面&显示** – 页面布局和显示设置
– **文章&列表** – 文章相关设置
– **功能&权限** – 功能权限控制
– **用户&互动** – 用户相关设置
– **支付&付费** – 支付系统设置
– **商城&商品** – 商城功能设置
– **社区&论坛** – 社区论坛设置
– **扩展&增强** – 扩展功能设置
5.2 重要配置函数
– `_pz(‘option_name’)` – 获取配置值
– `zib_get_option(‘option_name’)` – 获取配置值
六、AJAX接口
6.1 支付相关AJAX
– `wp_ajax_submit_order` – 提交订单
– `wp_ajax_nopriv_submit_order` – 未登录用户提交订单
– `wp_ajax_zibpay_file_upload` – 文件上传
6.2 用户相关AJAX
– `wp_ajax_user_apply_withdraw` – 用户申请提现
– `wp_ajax_zib_ajax_get_gzh_open_id` – 获取微信公众号OpenID
七、常量定义
7.1 主题常量
– `ZIB_TEMPLATE_DIRECTORY_URI` – 主题目录URI
– `ZIB_ROOT_PATH` – 主题根路径
– `ZIB_TEMP_DIR` – 临时目录
– `THEME_VERSION` – 主题版本
7.2 支付相关常量
– 订单状态常量
– 支付方式常量
– 卡密类型常量
八、开发注意事项
8.1 性能优化
– 使用缓存机制减少数据库查询
– 合理使用静态变量缓存重复数据
– 避免在循环中执行数据库操作
8.2 安全性
– 所有用户输入必须进行验证和转义
– 使用WordPress提供的安全函数
– 遵循最小权限原则
8.3 兼容性
– 确保代码与WordPress核心兼容
– 考虑不同PHP版本的兼容性
– 测试在不同环境下的运行情况
九、性能优化机制分析
9.1 缓存机制
对象缓存 (Object Cache)
子比主题广泛使用WordPress对象缓存系统来减少数据库查询:
“`php
// 缓存读取模式
$cache_num = wp_cache_get($post_id, ‘post_pay_cuont’, true);
if (false !== $cache_num) {
return $cache_num;
}
// 缓存写入模式
wp_cache_set($post_id, $cuont, ‘post_pay_cuont’);
// 缓存删除模式
wp_cache_delete($order_id, ‘zibpay_ordermeta’);
“`
**主要缓存组:**
– `post_pay_cuont` – 文章支付次数缓存
– `user_order_data` – 用户订单数据缓存
– `zibpay_ordermeta` – 订单元数据缓存
– `zib_cache_group` – 通用缓存组
– `page_url` – 页面URL缓存
– `zib_option_meta_data` – 选项元数据缓存
静态变量缓存 (Static Variable Cache)
对于频繁调用的函数,使用静态变量缓存:
“`php
// 静态变量缓存示例
function zibpay_get_pay_mark()
{
// 声明静态变量,加速获取
static $pay_mark = null;
if (!$pay_mark) {
$pay_mark = _pz(‘pay_mark’) ?: ‘¥’;
}
return $pay_mark;
}
// 多维静态缓存
function zibpay_get_user_income_data($user_id, $status = 1)
{
// 静态缓存
static $this_data = null;
if (isset($this_data[$user_id][$status])) {
return $this_data[$user_id][$status];
}
// … 数据库查询逻辑
$this_data[$user_id][$status] = $result;
return $result;
}
“`
9.2 数据库优化
索引设计策略
子比主题为关键查询字段创建了复合索引:
— 订单表索引设计
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `post_id` (`post_id`),
KEY `order_num` (`order_num`),
KEY `status` (`status`),
KEY `order_type` (`order_type`),
KEY `payment_id` (`payment_id`),
KEY `pay_time` (`pay_time`, `pay_type`, `pay_price`, `id`),
KEY `post_author` (`post_author`, `referrer_id`, `income_status`, `rebate_status`, `id`)
**索引优化原则:**
– 为WHERE条件中的字段创建索引
– 为JOIN操作中的字段创建索引
– 为ORDER BY和GROUP BY中的字段创建索引
– 使用复合索引覆盖常见查询模式
#### 查询优化策略
1. **避免全表扫描** – 通过索引优化查询条件
2. **减少JOIN操作** – 通过合理的数据结构设计
3. **分页查询优化** – 使用LIMIT和OFFSET
4. **批量操作优化** – 减少单次数据库交互
9.3 内容采集性能影响分析
正常发布 vs 内容采集的性能差异
**正常发布流程的数据依赖:**
1. **分类标签统计更新** – 自动更新分类、标签的文章总数和阅读数
2. **作者数据更新** – 更新作者热度、积分、经验值等
3. **图片数据查询** – 处理文章内图片的元数据
4. **缓存系统更新** – 更新相关缓存数据
5. **关联数据同步** – 同步评论、点赞、收藏等关联数据
**内容采集的问题:**
1. **依赖数据缺失** – 采集内容缺少完整的依赖数据链
2. **缓存不一致** – 缓存数据与实际数据不匹配
3. **查询性能下降** – 需要额外的数据库查询来补全数据
4. **统计不准确** – 分类、作者等统计数据不完整
性能优化建议
**对于插件开发:**
1. **实现完整的数据依赖链**
– 在采集时补全分类、标签的统计数据
– 维护作者相关数据的完整性
– 确保图片等媒体文件的元数据完整
2. **优化缓存策略**
– 在数据变更时及时更新相关缓存
– 使用合理的缓存过期策略
– 避免缓存穿透和雪崩
3. **数据库优化**
– 为采集相关的查询创建合适的索引
– 使用批量操作减少数据库压力
– 实现数据预加载机制
4. **异步处理**
– 将非关键的数据处理任务异步化
– 使用队列系统处理批量操作
– 实现增量更新机制
9.4 扩展开发建议
钩子使用建议
– 优先使用主题提供的钩子进行扩展
– 避免直接修改核心文件
– 合理设置钩子优先级
函数调用建议
– 使用主题提供的工具函数
– 避免重复造轮子
– 遵循主题的编码规范
数据库操作建议
– 使用主题提供的数据库类
– 避免直接操作数据库表
– 注意数据一致性和完整性
*本文档最后更新:2025-10-31*
*适用于子比主题版本:8.3*








- 最新
- 最热
只看作者