【子比主题】开发文档

【子比主题】开发文档

概述

本文档详细记录了子比主题 (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*

© 版权声明
THE END
喜欢就支持一下吧
点赞6028赞赏 分享
评论 共812条

请登录后发表评论

    • 头像孙悟空0
    • 头像复古Gallery0
    • 头像丧熊0
    • 头像吃瓜阿强0
    • 头像摄影小王0