子比主题插件开发完整指南

AI摘要
小武站

基于对项目代码库的分析,提供完整的子比主题(Zibll)插件开发指南。

🔑 核心钩子和过滤器

1. 支付方式扩展

// 新增支付方式
add_filter('zibpay_payment_methods', 'my_custom_payment_method', 10, 2);
function my_custom_payment_method($methods, $pay_type) {
    // 自定义支付方式逻辑
    return $methods;
}

// 允许余额支付
add_filter('zibpay_is_allow_balance_pay', 'my_balance_pay_filter', 10, 2);
function my_balance_pay_filter($is_allow, $pay_type) {
    // 逻辑判断
    return $is_allow;
}

2. 订单处理钩子

// 订单创建后
add_action('order_created', 'my_order_created_callback', 10, 1);

// 订单支付成功
add_action('payment_order_success', 'my_payment_success_callback', 10, 2);

// 订单关闭
add_action('order_closed', 'my_order_closed_callback', 10, 1);

// 订单退款
add_action('order_refunded', 'my_order_refunded_callback', 10, 1);

3. 商城功能钩子

// 商品添加到购物车
add_action('shop_add_to_cart', 'my_cart_add_callback', 10, 1);

// 购物车更新
add_action('shop_cart_updated', 'my_cart_update_callback', 10, 1);

// 订单发货
add_action('shop_order_shipped', 'my_shipping_callback', 10, 1);

💳 示例1:添加新的支付网关

<?php
/**
 * 自定义支付方式示例
 */

// 注册支付方式
add_filter('zibpay_payment_methods', 'custom_register_payment', 10, 2);
function custom_register_payment($methods, $pay_type) {
    $methods['custom_pay'] = [
        'name' => '自定义支付',
        'img'  => '<img src="/path/to/logo.png" alt="Custom Pay">',
    ];
    return $methods;
}

// 处理支付请求
add_action('wp_ajax_initiate_custom_pay', 'custom_initiate_payment');
add_action('wp_ajax_nopriv_initiate_custom_pay', 'custom_initiate_payment');
function custom_initiate_payment() {
    // 验证nonce
    check_ajax_referer('custom_pay_nonce');
    
    // 获取订单数据
    $payment_id = isset($_POST['payment_id']) ? intval($_POST['payment_id']) : 0;
    if (!$payment_id) {
        wp_send_json_error(['msg' => '参数错误']);
    }
    
    // 获取支付数据
    $payment_data = zibpay::get_payment($payment_id);
    if (!$payment_data || $payment_data['status'] != 0) {
        wp_send_json_error(['msg' => '订单无效']);
    }
    
    // 构建支付参数
    $pay_args = [
        'order_id'    => $payment_data['order_num'],
        'amount'      => $payment_data['pay_price'],
        'notify_url'  => home_url('/custom-pay/notify'),
        'return_url'  => home_url('/custom-pay/return'),
        // 其他支付参数
    ];
    
    // 调用支付接口
    $pay_url = custom_build_payment_url($pay_args);
    
    wp_send_json_success([
        'pay_url' => $pay_url,
        'type'    => 'redirect', // redirect 或 qrcode
    ]);
}

// 支付异步通知处理
add_action('template_redirect', 'custom_pay_notify_handler');
function custom_pay_notify_handler() {
    if (!isset($_GET['custom_pay_notify'])) {
        return;
    }
    
    // 验证签名
    if (!custom_verify_signature($_POST)) {
        echo 'FAIL';
        exit;
    }
    
    // 获取订单号
    $order_num = sanitize_text_field($_POST['order_id']);
    
    // 获取订单
    $payment = zibpay::get_payment_by_order_num($order_num);
    if (!$payment || $payment['status'] == 1) {
        echo 'SUCCESS';
        exit;
    }
    
    // 更新订单状态
    zibpay::payment_success($payment['id'], 'custom_pay');
    
    echo 'SUCCESS';
    exit;
}

// 支付返回处理
add_action('template_redirect', 'custom_pay_return_handler');
function custom_pay_return_handler() {
    if (!isset($_GET['custom_pay_return'])) {
        return;
    }
    
    $order_num = sanitize_text_field($_GET['order_id']);
    
    // 跳转到订单页面
    wp_safe_redirect(zib_get_user_center_url('orders'));
    exit;
}

示例2:商城功能扩展

<?php
/**
 * 商城功能扩展示例
 */

// 添加自定义商品字段
add_action('shop_product_options', 'custom_add_product_field');
function custom_add_product_field() {
    ?>
    <div class="mb10">
        <label class="mb6 block">自定义库存字段</label>
        <input type="text" name="custom_stock" class="form-control" value="<?php echo esc_attr(get_post_meta(get_the_ID(), '_custom_stock', true)); ?>">
    </div>
    <?php
}

// 保存自定义字段
add_action('shop_save_product', 'custom_save_product_field');
function custom_save_product_field($post_id) {
    if (isset($_POST['custom_stock'])) {
        update_post_meta($post_id, '_custom_stock', sanitize_text_field($_POST['custom_stock']));
    }
}

// 修改商品显示
add_filter('shop_product_display', 'custom_modify_product_display', 10, 2);
function custom_modify_product_display($content, $product_id) {
    $custom_stock = get_post_meta($product_id, '_custom_stock', true);
    if ($custom_stock) {
        $content .= '<div class="custom-stock-info">自定义库存: ' . esc_html($custom_stock) . '</div>';
    }
    return $content;
}

// 订单创建时添加自定义逻辑
add_action('order_created', 'custom_order_created_logic', 10, 1);
function custom_order_created_logic($order) {
    if ($order['order_type'] != 10) { // 10 = 商城订单
        return;
    }
    
    $product_id = $order['post_id'];
    $custom_stock = get_post_meta($product_id, '_custom_stock', true);
    
    // 自定义库存处理逻辑
    if ($custom_stock) {
        // 更新自定义库存
        update_post_meta($product_id, '_custom_stock', intval($custom_stock) - $order['count']);
    }
}

🎖️ 示例3:会员功能扩展

<?php
/**
 * 会员功能扩展示例
 */

// 添加会员专属功能
add_action('user_vip_purchased', 'custom_vip_purchased_callback', 10, 3);
function custom_vip_purchased_callback($user_id, $vip_level, $expire_time) {
    // 会员购买后的处理逻辑
    // 例如:发送欢迎邮件、添加专属徽章等
    update_user_meta($user_id, '_custom_vip_badge', true);
}

// 添加会员专属内容
add_action('wp_head', 'custom_vip_content_check');
function custom_vip_content_check() {
    if (is_single()) {
        $post_id = get_the_ID();
        $is_vip_only = get_post_meta($post_id, '_vip_only', true);
        
        if ($is_vip_only == 'yes' && !zib_is_vip()) {
            // 非会员显示提示
            add_filter('the_content', 'custom_vip_only_content');
        }
    }
}

function custom_vip_only_content($content) {
    return '<div class="vip-only-notice">
        <div class="muted-box padding-20 text-center">
            <i class="fa fa-lock fa-3x c-yellow mb10"></i>
            <h3 class="mb10">此内容仅限会员查看</h3>
            <p>购买会员即可解锁全部内容</p>
            <a href="' . esc_url(zib_get_user_center_url('vip')) . '" class="but jb-yellow mt10">立即开通</a>
        </div>
    </div>';
}

📁 推荐的插件结构

zibll-custom-plugin/
├── zibll-custom-plugin.php          # 主插件文件
├── includes/
│   ├── payment-gateway.php         # 支付网关
│   ├── shop-extension.php          # 商城扩展
│   ├── vip-extension.php           # 会员扩展
│   └── functions.php               # 通用函数
├── assets/
│   ├── css/
│   └── js/
└── templates/
    └── custom-template.php

🔧 开发建议
1.使用子比主题内置函数:
zib_opt() – 获取主题选项
zibpay::get_order() – 获取订单
zib_is_vip() – 判断会员状态
zib_get_user_center_url() – 获取用户中心链接

2.遵循WordPress最佳实践:
使用正确的钩子和过滤器
做好安全验证(nonce, sanitize)
使用WordPress数据库API

3.兼容性检查:

if (!function_exists('zib_opt')) {
    // 子比主题未激活的处理
}

📝 快速开始模板
创建一个新插件的主文件模板:

<?php
/**
 * Plugin Name: 你的插件名称
 * Plugin URI: https://your-site.com
 * Description: 为子比主题开发的插件
 * Version: 1.0.0
 * Author: Your Name
 * License: GPL v2 or later
 */

if (!defined('ABSPATH')) {
    exit;
}

// 检查子比主题
if (!function_exists('zib_opt')) {
    add_action('admin_notices', function() {
        echo '<div class="notice notice-error"><p>请先激活子比主题!</p></div>';
    });
    return;
}

// 你的插件代码...

 

 

若您发现内容有误或已失效,请在下方 留言 反馈,我会及时核实更新。
© 版权声明
THE END
喜欢就支持一下吧
点赞5388支持作者 分享
评论标题 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情图片快捷回复

    暂无评论内容