主题函数
子比主题常用函数分布、查找方法、读取写入封装、Ajax 响应、用户中心、图标和业务函数调用边界。
函数分布
子比主题函数不是集中在一个文件里。按模块看更容易:
| 目录 | 作用 |
|---|---|
inc/dependent.php | 前置依赖、主题设置、聚合 meta、语言上下文 |
inc/functions/zib-*.php | 主题展示、文章、用户、搜索、分享、附件、邮件 |
inc/functions/user/* | 用户中心、权限、等级、封禁、签到、认证、勋章、邀请码 |
inc/functions/bbs/* | 论坛首页、板块、帖子、话题、标签、评论、版主、小工具 |
inc/functions/shop/* | 商城商品、购物车、分类、售后、物流、店铺、页面、小工具 |
inc/functions/message/* | 站内消息、私信、模板消息、消息中心 |
action/* | 登录注册、用户资料、评论、上传、投稿、搜索等 Ajax |
zibpay/functions/* | 订单、支付、余额、积分、VIP、下载、分佣、提现、优惠券 |
oauth/* | 第三方登录 |
inc/options/* | 后台设置、CSF 字段、保存和后台动作 |
查函数时先确认模块,再看入口文件如何 zib_require()。
基础配置函数
inc/dependent.php 中的 _pz() 是主题设置读取入口:
$shop_s = _pz('shop_s');
$ajax_text = _pz('ajax_trigger', __('加载更多', 'zib_language'));
$class = _pz('checkin_header_user_option', 'c-yellow', 'class');函数定义:
function _pz($name, $default = false, $subname = '')特点:
- 读取
wp_options.zibll_options。 - 使用静态变量缓存。
- 支持读取数组子键。
- 找不到时返回默认值。
单独更新主题设置:
_spz('option_key', $value);不要整包覆盖 zibll_options,否则容易丢配置。
聚合 Meta 函数
子比主题把一部分 post/user/term/comment meta 聚合到 zib_other_data。判断清单来自:
zib_get_option_meta_keys($type)读写函数:
zib_get_post_meta($id, $key, true);
zib_update_post_meta($id, $key, $value);
zib_get_user_meta($id, $key, true);
zib_update_user_meta($id, $key, $value);
zib_get_term_meta($id, $key, true);
zib_update_term_meta($id, $key, $value);文章封面:
$cover = zib_get_post_meta($post_id, 'cover_image', true);用户头像:
$avatar = zib_get_user_meta($user_id, 'custom_avatar', true);分类封面:
$term_cover = zib_get_term_meta($term_id, 'cover_image', true);凡是主题已有字段,优先用这些封装函数,不要直接 get_post_meta() 猜保存位置。
Ajax 响应函数
action/ajax.php 提供子比 Ajax 响应:
zib_send_json_error($data = false, $type = 'danger');
zib_send_json_success($data = false, $type = '');典型使用:
if (!$user_id) {
zib_send_json_error(__('请先登录', 'zib_language'));
}
zib_send_json_success(array(
'msg' => __('保存成功', 'zib_language'),
'html' => $html,
));主题前端通常会识别这些响应结构并展示通知、刷新局部 HTML、打开弹窗或跳转页面。
Ajax 校验函数
通用 Ajax 工具在 action/function.php:
| 函数 | 用途 |
|---|---|
zib_ajax_wp_verify_nonce() | 校验 WordPress nonce |
zib_ajax_verify_nonce() | 校验主题 Ajax nonce |
zib_ajax_man_machine_verification() | 人机验证 |
zib_ajax_captcha_form_judgment() | 表单验证码判断 |
zib_ajax_send_captcha() | 发送验证码 |
zib_ajax_is_verify_user() | 用户身份认证判断 |
zib_ajax_debounce() | 防抖限频 |
zib_ajax_email_judgment() | 邮箱格式与状态判断 |
zib_ajax_username_judgment() | 用户名判断 |
写入类 Ajax 不要只校验 nonce。还要确认当前用户、目标对象、状态、金额、库存、权限。
数组读取函数
zib_get_array_value() 在 inc/functions/zib-tool.php:
function zib_get_array_value($array, $key = null, $default = '')它常用于读取嵌套配置。导航菜单项配置函数 zib_menu_pz() 就依赖它:
function zib_menu_pz($id, $key = '', $default = '')
{
static $options = [];
if (!isset($options[$id])) {
$options[$id] = get_post_meta($id, 'zib_menu_options', true);
}
return zib_get_array_value($options[$id], $key, $default);
}读取菜单徽章:
$badge = zib_menu_pz($item->ID, 'badge');读取高级子菜单配置:
$opts = zib_menu_pz($item->ID, 'graphic_card_opts', array());第一个参数必须是菜单项 ID,不是菜单指向对象的 ID。
用户中心函数
用户中心入口在:
inc/functions/user/user.php
inc/functions/user/page.php常用函数:
zib_get_user_center_url($type = null, $tab = null);用途:
$url = zib_get_user_center_url('profile');用户展示相关 Filter:
apply_filters('user_show_name', $html, $args['id']);
apply_filters('user_name_badge', $badge, $user_id);
apply_filters('user_avatar_badge', $vip_badge, $user_id);权限相关:
zib_current_user_can($capability, $args);
zib_user_can($user_id, $capability, $args);实际函数分布在 inc/functions/user/user-cap.php 等文件中。调用前先确认用户模块已加载。
图标与后台链接
CSF 图标输出:
zib_get_cfs_icon($val, $class = '');常用于菜单图标、小工具图标、按钮图标:
$icon = zib_get_cfs_icon($icon_value, 'mr6 fa-fw');后台主题设置页链接:
zib_get_admin_csf_url($tab = '');源码里常见写法:
zib_get_admin_csf_url('商城商品/商品参数')适合在后台字段说明里生成“去配置”链接。
内容与列表函数
主题文章和列表函数分布:
inc/functions/zib-post.php
inc/functions/zib-posts-list.php
inc/functions/zib-single.php
inc/functions/zib-content.php常见任务:
- 获取文章缩略图。
- 输出文章列表卡片。
- 处理文章目录。
- 处理隐藏内容和付费内容。
- 输出面包屑、标签、专题、分享按钮。
读这类函数时要看返回值是 HTML 字符串还是直接 echo。子比源码两种都有,调用前先确认。
Zibpay 函数边界
Zibpay 函数分布在:
zibpay/functions/
zibpay/class/
zibpay/download.php涉及这些对象:
- 订单。
- 支付渠道。
- 余额和积分。
- VIP。
- 下载权限。
- 作者分成。
- 推广返佣。
- 提现。
- 优惠券。
支付、余额、积分、VIP、库存、下载权限不要只改 meta。应该走订单、状态、日志、Hook 和业务函数。支付成功后关注:
do_action('payment_order_success', $order);下载前关注:
do_action('zibpay_download_before', $post_id, $down_id, $paid, $file_url, $file_local);论坛与商城函数边界
论坛函数主要在:
inc/functions/bbs/读写论坛帖子、板块、话题时要注意:
forum_post和plate是 post type。plate_cat、forum_topic、forum_tag是 taxonomy。- 版主、关注、发帖权限、评分、采纳都有自己的流程。
商城函数主要在:
inc/functions/shop/读写商品、购物车、地址、售后、物流时要注意:
shop_product是商品 post type。product_config是商品配置数组。shop_cat_config、shop_tag_config、shop_discount_config是 taxonomy 配置数组。- 订单状态和支付状态要从 Zibpay 体系判断。
查找函数的办法
快速搜索函数定义:
rg -n "function zib_get_user_center_url|zib_get_user_center_url" C:\Users\Administrator\Desktop\zibll -g "*.php"从 Ajax action 找回调:
rg -n "wp_ajax_user_signin|function zib_ajax_user_signin" C:\Users\Administrator\Desktop\zibll -g "*.php"从 Hook 找触发点:
rg -n "payment_order_success|zib_user_bind_email|bbs_follow_plate" C:\Users\Administrator\Desktop\zibll -g "*.php"从文案找渲染函数:
rg -n "签到领取今日奖励|商品参数|阅读权限" C:\Users\Administrator\Desktop\zibll -g "*.php"调用规则
- 先确认函数所在模块已加载。
- 读主题设置用
_pz()。 - 读写主题字段用
zib_get_*_meta()/zib_update_*_meta()。 - Ajax 返回优先保持
zib_send_json_success/error结构。 - HTML 输出前确认函数是返回还是 echo。
- 涉及订单、余额、积分、会员、库存、下载权限时走业务流程。
- Filter 回调必须返回值,Action 回调不要随意
exit。