首页 / 教程文章 / WordPress文创插件实现柔性分销渠道管理的教程

WordPress文创插件实现柔性分销渠道管理的教程

WordPress文创插件实现柔性分销渠道管理教程

引言:文创产品的分销挑战与解决方案

在文创产品日益流行的今天,如何有效管理分销渠道成为许多创作者和商家的核心挑战。传统的分销系统往往缺乏灵活性,难以适应文创产品多样化的销售需求。本教程将介绍如何通过WordPress插件实现柔性分销渠道管理,让您能够轻松管理不同层级的分销商、设置灵活的佣金规则,并实时跟踪销售数据。

环境准备与插件选择

1. 基础环境要求

在开始之前,请确保您的WordPress环境满足以下要求:

  • WordPress 5.0或更高版本
  • PHP 7.2或更高版本
  • MySQL 5.6或更高版本
  • 已安装WooCommerce插件(用于产品管理)

2. 推荐插件选择

我们将使用"Flexible Affiliate"作为基础插件,并在此基础上进行定制开发。您可以从WordPress官方插件库安装该插件,或使用以下代码创建自定义插件。

创建自定义分销管理插件

1. 插件基础结构

<?php
/**
 * Plugin Name: 文创柔性分销管理
 * Plugin URI: https://yourwebsite.com/
 * Description: 为文创产品设计的柔性分销渠道管理系统
 * Version: 1.0.0
 * Author: 您的名称
 * License: GPL v2 or later
 */

// 防止直接访问
if (!defined('ABSPATH')) {
    exit;
}

// 定义插件常量
define('CULTURAL_DISTRIBUTION_VERSION', '1.0.0');
define('CULTURAL_DISTRIBUTION_PLUGIN_DIR', plugin_dir_path(__FILE__));
define('CULTURAL_DISTRIBUTION_PLUGIN_URL', plugin_dir_url(__FILE__));

// 初始化插件
add_action('plugins_loaded', 'cultural_distribution_init');

function cultural_distribution_init() {
    // 检查WooCommerce是否激活
    if (!class_exists('WooCommerce')) {
        add_action('admin_notices', 'cultural_distribution_woocommerce_notice');
        return;
    }
    
    // 加载核心类
    require_once CULTURAL_DISTRIBUTION_PLUGIN_DIR . 'includes/class-distribution-manager.php';
    require_once CULTURAL_DISTRIBUTION_PLUGIN_DIR . 'includes/class-commission-calculator.php';
    require_once CULTURAL_DISTRIBUTION_PLUGIN_DIR . 'includes/class-affiliate-dashboard.php';
    
    // 初始化核心组件
    new Distribution_Manager();
    new Commission_Calculator();
    
    // 如果是管理员,加载管理界面
    if (is_admin()) {
        require_once CULTURAL_DISTRIBUTION_PLUGIN_DIR . 'admin/class-admin-settings.php';
        new Admin_Settings();
    }
}

function cultural_distribution_woocommerce_notice() {
    ?>
    <div class="notice notice-error">
        <p>文创柔性分销管理插件需要WooCommerce支持。请先安装并激活WooCommerce插件。</p>
    </div>
    <?php
}
?>

2. 分销商管理模块

<?php
/**
 * 分销商管理类
 * 处理分销商的注册、分级和管理
 */

class Distribution_Manager {
    
    public function __construct() {
        // 添加分销商用户角色
        add_action('init', array($this, 'add_affiliate_role'));
        
        // 注册分销商注册短代码
        add_shortcode('affiliate_registration', array($this, 'affiliate_registration_form'));
        
        // 处理分销商注册提交
        add_action('admin_post_affiliate_registration', array($this, 'handle_registration'));
    }
    
    /**
     * 添加分销商用户角色
     */
    public function add_affiliate_role() {
        add_role('cultural_affiliate', 
            '文创分销商',
            array(
                'read' => true,
                'edit_posts' => false,
                'delete_posts' => false,
                'upload_files' => true,
            )
        );
    }
    
    /**
     * 分销商注册表单
     */
    public function affiliate_registration_form() {
        ob_start();
        ?>
        <div class="affiliate-registration-form">
            <h2>成为文创产品分销商</h2>
            <form method="post" action="<?php echo admin_url('admin-post.php'); ?>">
                <input type="hidden" name="action" value="affiliate_registration">
                
                <div class="form-group">
                    <label for="affiliate_name">姓名/公司名称 *</label>
                    <input type="text" id="affiliate_name" name="affiliate_name" required>
                </div>
                
                <div class="form-group">
                    <label for="affiliate_email">邮箱地址 *</label>
                    <input type="email" id="affiliate_email" name="affiliate_email" required>
                </div>
                
                <div class="form-group">
                    <label for="affiliate_phone">联系电话</label>
                    <input type="tel" id="affiliate_phone" name="affiliate_phone">
                </div>
                
                <div class="form-group">
                    <label for="affiliate_level">希望的分销等级</label>
                    <select id="affiliate_level" name="affiliate_level">
                        <option value="basic">基础分销商 (10%佣金)</option>
                        <option value="premium">高级分销商 (15%佣金)</option>
                        <option value="partner">合作伙伴 (20%佣金 + 奖金)</option>
                    </select>
                </div>
                
                <div class="form-group">
                    <label for="marketing_plan">简要描述您的推广计划</label>
                    <textarea id="marketing_plan" name="marketing_plan" rows="4"></textarea>
                </div>
                
                <button type="submit" class="btn btn-primary">提交申请</button>
            </form>
        </div>
        <?php
        return ob_get_clean();
    }
    
    /**
     * 处理注册申请
     */
    public function handle_registration() {
        // 验证非ce和权限
        if (!wp_verify_nonce($_POST['_wpnonce'], 'affiliate_registration')) {
            wp_die('安全验证失败');
        }
        
        // 获取表单数据
        $name = sanitize_text_field($_POST['affiliate_name']);
        $email = sanitize_email($_POST['affiliate_email']);
        $phone = sanitize_text_field($_POST['affiliate_phone']);
        $level = sanitize_text_field($_POST['affiliate_level']);
        $plan = sanitize_textarea_field($_POST['marketing_plan']);
        
        // 创建用户账户
        $user_id = wp_create_user($email, wp_generate_password(), $email);
        
        if (!is_wp_error($user_id)) {
            // 更新用户信息
            wp_update_user(array(
                'ID' => $user_id,
                'display_name' => $name,
                'role' => 'cultural_affiliate'
            ));
            
            // 保存分销商元数据
            update_user_meta($user_id, 'affiliate_phone', $phone);
            update_user_meta($user_id, 'affiliate_level', $level);
            update_user_meta($user_id, 'affiliate_status', 'pending');
            update_user_meta($user_id, 'affiliate_plan', $plan);
            update_user_meta($user_id, 'affiliate_code', $this->generate_affiliate_code($user_id));
            
            // 发送通知邮件
            $this->send_registration_notification($user_id, $name, $email);
            
            // 重定向到感谢页面
            wp_redirect(home_url('/affiliate-thank-you'));
            exit;
        }
    }
    
    /**
     * 生成分销商唯一代码
     */
    private function generate_affiliate_code($user_id) {
        return 'CULT' . str_pad($user_id, 6, '0', STR_PAD_LEFT);
    }
    
    /**
     * 发送注册通知
     */
    private function send_registration_notification($user_id, $name, $email) {
        $admin_email = get_option('admin_email');
        $subject = '新的文创分销商申请';
        $message = "收到新的分销商申请:nn";
        $message .= "姓名:{$name}n";
        $message .= "邮箱:{$email}n";
        $message .= "用户ID:{$user_id}nn";
        $message .= "请登录管理后台审核申请。";
        
        wp_mail($admin_email, $subject, $message);
    }
}
?>

3. 佣金计算系统

<?php
/**
 * 佣金计算类
 * 根据不同的产品和分销等级计算佣金
 */

class Commission_Calculator {
    
    private $commission_rates;
    
    public function __construct() {
        // 初始化佣金率
        $this->commission_rates = array(
            'basic' => 0.10,    // 10%
            'premium' => 0.15,  // 15%
            'partner' => 0.20   // 20%
        );
        
        // 在订单完成时计算佣金
        add_action('woocommerce_order_status_completed', array($this, 'calculate_order_commission'), 10, 1);
    }
    
    /**
     * 计算订单佣金
     * @param int $order_id 订单ID
     */
    public function calculate_order_commission($order_id) {
        $order = wc_get_order($order_id);
        $affiliate_id = $this->get_affiliate_from_order($order);
        
        if (!$affiliate_id) {
            return; // 该订单没有关联的分销商
        }
        
        $affiliate_level = get_user_meta($affiliate_id, 'affiliate_level', true);
        $commission_rate = $this->get_commission_rate($affiliate_level);
        
        $total_commission = 0;
        
        // 计算每个产品的佣金
        foreach ($order->get_items() as $item) {
            $product_id = $item->get_product_id();
            $product_commission_rate = $this->get_product_commission_rate($product_id);
            
            // 使用产品特定佣金率或默认佣金率
            $item_rate = $product_commission_rate ?: $commission_rate;
            
            $item_total = $item->get_total();
            $item_commission = $item_total * $item_rate;
            
            $total_commission += $item_commission;
            
            // 记录每项产品的佣金明细
            $this->record_commission_detail(
                $order_id,
                $affiliate_id,
                $product_id,
                $item_total,
                $item_rate,
                $item_commission
            );
        }
        
        // 记录总佣金
        if ($total_commission > 0) {
            $this->record_total_commission($order_id, $affiliate_id, $total_commission);
        }
    }
    
    /**
     * 从订单中获取分销商信息
     */
    private function get_affiliate_from_order($order) {
        // 这里可以从订单备注、优惠码或自定义字段中获取分销商信息
        // 示例:通过优惠码识别分销商
        $coupons = $order->get_coupon_codes();
        
        foreach ($coupons as $coupon_code) {
            $affiliate_id = $this->get_affiliate_by_coupon($coupon_code);
            if ($affiliate_id) {
                return $affiliate_id;
            }
        }
        
        return false;
    }
    
    /**
     * 获取分销商等级对应的佣金率
     */
    private function get_commission_rate($level) {
        return isset($this->commission_rates[$level]) ? 
               $this->commission_rates[$level] : 
               $this->commission_rates['basic'];
    }
    
    /**
     * 获取产品特定的佣金率
     */
    private function get_product_commission_rate($product_id) {
        $custom_rate = get_post_meta($product_id, '_affiliate_commission_rate', true);
        return $custom_rate ? floatval($custom_rate) : false;
    }
    
    /**
     * 记录佣金明细
     */
    private function record_commission_detail($order_id, $affiliate_id, $product_id, $amount, $rate, $commission) {
        global $wpdb;
        
        $table_name = $wpdb->prefix . 'cultural_commission_details';
        
        $wpdb->insert(
            $table_name,
            array(
                'order_id' => $order_id,
                'affiliate_id' => $affiliate_id,
                'product_id' => $product_id,
                'sale_amount' => $amount,
                'commission_rate' => $rate,
                'commission_amount' => $commission,
                'created_at' => current_time('mysql')
            ),
            array('%d', '%d', '%d', '%f', '%f', '%f', '%s')
        );
    }
    
    /**
     * 记录总佣金
     */
    private function record_total_commission($order_id, $affiliate_id, $total_commission) {
        global $wpdb;
        
        $table_name = $wpdb->prefix . 'cultural_commissions';
        
        $wpdb->insert(
            $table_name,
            array(
                'order_id' => $order_id,
                'affiliate_id' => $affiliate_id,
                'total_commission' => $total_commission,
                'status' => 'pending',
                'created_at' => current_time('mysql')
            ),
            array('%d', '%d', '%f', '%s', '%s')
        );
        
        // 更新分销商总收益
        $total_earnings = get_user_meta($affiliate_id, 'total_earnings', true);
        $total_earnings = $total_earnings ? floatval($total_earnings) : 0;
        $total_earnings += $total_commission;
        
        update_user_meta($affiliate_id, 'total_earnings', $total_earnings);
    }
}
?>

数据库表结构设计

1. 创建佣金相关数据表

<?php
/**
 * 数据库安装和升级
 */

class Database_Manager {
    
    public static function install_tables() {
        global $wpdb;
        
        $charset_collate = $wpdb->get_charset_collate();
        
        // 佣金总表
        $commission_table = $wpdb->prefix . 'cultural_commissions';
        $commission_details_table = $wpdb->prefix . 'cultural_commission_details';
        
        $sql = "CREATE TABLE IF NOT EXISTS $commission_table (
            id bigint(20) NOT NULL AUTO_INCREMENT,
            order_id bigint(20) NOT NULL,
            affiliate_id bigint(20) NOT NULL,
            total_commission decimal(10,2) NOT NULL,
            status varchar(20) DEFAULT 'pending',
            paid_date datetime DEFAULT NULL,
            created_at datetime NOT NULL,
            PRIMARY KEY (id),
            KEY order_id (order_id),
            KEY affiliate_id (affiliate_id),
            KEY status (status)
        ) $charset_collate;
        
        CREATE TABLE IF NOT EXISTS $commission_details_table (
            id bigint(20) NOT NULL AUTO_INCREMENT,
            commission_id bigint(20) NOT NULL,
            order_id bigint(20) NOT NULL,
            affiliate_id bigint(20) NOT NULL,
            product_id bigint(20) NOT NULL,
            sale_amount decimal(10,2) NOT NULL,
            commission_rate decimal(5,4) NOT NULL,
            commission_amount decimal(10,2) NOT NULL,
            created_at datetime NOT NULL,
            PRIMARY KEY (id),
            KEY commission_id (commission_id),
            KEY order_id (order_id),
            KEY affiliate_id (affiliate_id),
            KEY product_id (product_id)
        ) $charset_collate;";
        
        require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
        dbDelta($sql);
    }
}
?>

分销商前端仪表板

1. 创建分销商个人中心

<?php
/**
 * 分销商仪表板类
 * 提供分销商查看业绩、生成推广链接等功能
 */

class Affiliate_Dashboard {
    
    public function __construct() {
        // 添加分销商仪表板短代码
        add_shortcode('affiliate_dashboard', array($this, 'render_dashboard'));
        
        // 添加推广链接生成功能
        add_action('wp_ajax_generate_affiliate_link', array($this, 'generate_affiliate_link'));
    }
    
    /**
     * 渲染分销商仪表板
     */
    public function render_dashboard() {
        // 检查用户是否是分销商
        if (!current_user_can('cultural_affiliate')) {
            return '<p>您需要登录分销商账户才能访问此页面。</p>';
        }
        
        $user_id = get_current_user_id();
        ob_start();
        ?>
        <div class="affiliate-dashboard">
            <h1>分销商仪表板</h1>
            
            <div class="dashboard-stats">
                <div class="stat-card">
                    <h3>总收益</h3>
                    <p class="stat-value">¥<?php echo number_format($this->get_total_earnings($user_id), 2); ?></p>
                </div>
                
                <div class="stat-card">
                    <h3>待结算佣金</h3>
                    <p class="stat-value">¥<?php echo number_format($this->get_pending_commission($user_id), 2); ?></p>
                </div>
                
                <div class="stat-card">
                    <h3>已推广订单</h3>
                    <p class="stat-value"><?php echo $this->get_total_orders($user_id); ?></p>
                </div>
            </div>
            
            <div class="dashboard-section">
                <h2>推广工具</h2>
                <div class="promotion-tools">
                    <div class="tool-item">
                        <h4>您的推广代码</h4>
                        <input type="text" readonly value="<?php echo get_user_meta($user_id, 'affiliate_code', true); ?>" class="affiliate-code">
                        <button class="copy-btn" data-clipboard-target=".affiliate-code">复制代码</button>
                    </div>
                    
                    <div class="tool-item">
                        <h4>生成推广链接</h4>
                        <div class="link-generator">
                            <select id="product-select">
                                <option value="">选择要推广的产品</option>
                                <?php echo $this->get_product_options(); ?>
                            </select>
                            <button id="generate-link-btn" class="btn-primary">生成推广链接</button>
                            <div id="generated-link" style="display:none; margin-top:10px;">
                                <input type="text" readonly class="generated-link-input">
                                <button class="copy-link-btn">复制链接</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            
            <div class="dashboard-section">
                <h2>最近订单</h2>
                <table class="affiliate-orders">
                    <thead>
                        <tr>
                            <th>订单号</th>
                            <th>日期</th>
                            <th>金额</th>
                            <th>佣金</th>
                            <th>状态</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php echo $this->get_recent_orders($user_id); ?>
                    </tbody>
                </table>
            </div>
            
            <div class="dashboard-section">
                <h2>佣金明细</h2>
                <div class="commission-chart">
                    <?php echo $this->render_commission_chart($user_id); ?>
                </div>
            </div>
        </div>
        
        <script>
        jQuery(document).ready(function($) {
            // 复制功能
            $('.copy-btn').click(function() {
                var $input = $(this).siblings('.affiliate-code');
                $input.select();
                document.execCommand('copy');
                $(this).text('已复制!');
                setTimeout(() => $(this).text('复制代码'), 2000);
            });
            
            // 生成推广链接
            $('#generate-link-btn').click(function() {
                var productId = $('#product-select').val();
                if (!productId) {
                    alert('请选择产品');
                    return;
                }
                
                $.ajax({
                    url: '<?php echo admin_url('admin-ajax.php'); ?>',
                    type: 'POST',
                    data: {
                        action: 'generate_affiliate_link',
                        product_id: productId,
                        affiliate_code: '<?php echo get_user_meta($user_id, "affiliate_code", true); ?>',
                        security: '<?php echo wp_create_nonce("generate_affiliate_link"); ?>'
                    },
                    success: function(response) {
                        if (response.success) {
                            $('#generated-link').show();
                            $('.generated-link-input').val(response.data.link);
                        } else {
                            alert('生成链接失败');
                        }
                    }
                });
            });
        });
        </script>
        <?php
        return ob_get_clean();
    }
    
    /**
     * 获取产品选项
     */
    private function get_product_options() {
        $products = wc_get_products(array(
            'status' => 'publish',
            'limit' => 50
        ));
        
        $options = '';
        foreach ($products as $product) {
            $options .= sprintf(
                '<option value="%d">%s</option>',
                $product->get_id(),
                esc_html($product->get_name())
            );
        }
        
        return $options;
    }
    
    /**
     * 生成推广链接
     */
    public function generate_affiliate_link() {
        // 验证nonce
        check_ajax_referer('generate_affiliate_link', 'security');
        
        $product_id = intval($_POST['product_id']);
        $affiliate_code = sanitize_text_field($_POST['affiliate_code']);
        
        // 构建推广链接
        $base_url = get_permalink($product_id);
        $affiliate_link = add_query_arg('ref', $affiliate_code, $base_url);
        
        wp_send_json_success(array(
            'link' => $affiliate_link
        ));
    }
    
    /**
     * 获取总收益
     */
    private function get_total_earnings($user_id) {
        global $wpdb;
        $table_name = $wpdb->prefix . 'cultural_commissions';
        
        $total = $wpdb->get_var($wpdb->prepare(
            "SELECT SUM(total_commission) FROM $table_name 
             WHERE affiliate_id = %d AND status = 'paid'",
            $user_id
        ));
        
        return $total ? floatval($total) : 0;
    }
    
    /**
     * 获取待结算佣金
     */
    private function get_pending_commission($user_id) {
        global $wpdb;
        $table_name = $wpdb->prefix . 'cultural_commissions';
        
        $total = $wpdb->get_var($wpdb->prepare(
            "SELECT SUM(total_commission) FROM $table_name 
             WHERE affiliate_id = %d AND status = 'pending'",
            $user_id
        ));
        
        return $total ? floatval($total) : 0;
    }
    
    /**
     * 获取总订单数
     */
    private function get_total_orders($user_id) {
        global $wpdb;
        $table_name = $wpdb->prefix . 'cultural_commissions';
        
        return $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM $table_name WHERE affiliate_id = %d",
            $user_id
        ));
    }
    
    /**
     * 获取最近订单
     */
    private function get_recent_orders($user_id) {
        global $wpdb;
        $table_name = $wpdb->prefix . 'cultural_commissions';
        
        $orders = $wpdb->get_results($wpdb->prepare(
            "SELECT * FROM $table_name 
             WHERE affiliate_id = %d 
             ORDER BY created_at DESC 
             LIMIT 10",
            $user_id
        ));
        
        $html = '';
        foreach ($orders as $order) {
            $order_obj = wc_get_order($order->order_id);
            $order_date = $order_obj ? $order_obj->get_date_created()->date('Y-m-d') : '';
            $order_total = $order_obj ? $order_obj->get_total() : 0;
            
            $html .= sprintf(
                '<tr>
                    <td>#%d</td>
                    <td>%s</td>
                    <td>¥%s</td>
                    <td>¥%s</td>
                    <td><span class="status-%s">%s</span></td>
                </tr>',
                $order->order_id,
                $order_date,
                number_format($order_total, 2),
                number_format($order->total_commission, 2),
                $order->status,
                $this->get_status_label($order->status)
            );
        }
        
        return $html ?: '<tr><td colspan="5">暂无订单记录</td></tr>';
    }
    
    /**
     * 获取状态标签
     */
    private function get_status_label($status) {
        $labels = array(
            'pending' => '待结算',
            'paid' => '已支付',
            'cancelled' => '已取消'
        );
        
        return isset($labels[$status]) ? $labels[$status] : $status;
    }
    
    /**
     * 渲染佣金图表
     */
    private function render_commission_chart($user_id) {
        global $wpdb;
        $table_name = $wpdb->prefix . 'cultural_commissions';
        
        // 获取最近6个月的佣金数据
        $results = $wpdb->get_results($wpdb->prepare(
            "SELECT 
                DATE_FORMAT(created_at, '%%Y-%%m') as month,
                SUM(total_commission) as total
             FROM $table_name 
             WHERE affiliate_id = %d 
               AND created_at >= DATE_SUB(NOW(), INTERVAL 6 MONTH)
               AND status = 'paid'
             GROUP BY DATE_FORMAT(created_at, '%%Y-%%m')
             ORDER BY month",
            $user_id
        ));
        
        if (empty($results)) {
            return '<p>暂无佣金数据</p>';
        }
        
        // 准备图表数据
        $labels = array();
        $data = array();
        
        foreach ($results as $row) {
            $labels[] = $row->month;
            $data[] = floatval($row->total);
        }
        
        // 生成HTML和JavaScript
        ob_start();
        ?>
        <canvas id="commissionChart" width="400" height="200"></canvas>
        <script>
        jQuery(document).ready(function($) {
            var ctx = document.getElementById('commissionChart').getContext('2d');
            var chart = new Chart(ctx, {
                type: 'line',
                data: {
                    labels: <?php echo json_encode($labels); ?>,
                    datasets: [{
                        label: '佣金收入',
                        data: <?php echo json_encode($data); ?>,
                        backgroundColor: 'rgba(54, 162, 235, 0.2)',
                        borderColor: 'rgba(54, 162, 235, 1)',
                        borderWidth: 2,
                        tension: 0.1
                    }]
                },
                options: {
                    responsive: true,
                    scales: {
                        y: {
                            beginAtZero: true,
                            ticks: {
                                callback: function(value) {
                                    return '¥' + value;
                                }
                            }
                        }
                    }
                }
            });
        });
        </script>
        <?php
        return ob_get_clean();
    }
}
?>

管理后台设置界面

1. 创建管理设置页面

<?php
/**
 * 管理后台设置类
 */

class Admin_Settings {
    
    public function __construct() {
        // 添加管理菜单
        add_action('admin_menu', array($this, 'add_admin_menu'));
        
        // 注册设置
        add_action('admin_init', array($this, 'register_settings'));
        
        // 添加佣金管理页面
        add_action('admin_menu', array($this, 'add_commission_management_page'));
    }
    
    /**
     * 添加管理菜单
     */
    public function add_admin_menu() {
        add_menu_page(
            '文创分销管理',
            '文创分销',
            'manage_options',
            'cultural-distribution',
            array($this, 'render_settings_page'),
            'dashicons-store',
            30
        );
        
        add_submenu_page(
            'cultural-distribution',
            '分销商管理',
            '分销商管理',
            'manage_options',
            'cultural-affiliates',
            array($this, 'render_affiliates_page')
        );
        
        add_submenu_page(
            'cultural-distribution',
            '佣金设置',
            '佣金设置',
            'manage_options',
            'cultural-commission-settings',
            array($this, 'render_commission_settings_page')
        );
    }
    
    /**
     * 渲染设置页面
     */
    public function render_settings_page() {
        ?>
        <div class="wrap">
            <h1>文创分销管理设置</h1>
            
            <form method="post" action="options.php">
                <?php
                settings_fields('cultural_distribution_settings');
                do_settings_sections('cultural-distribution');
                submit_button();
                ?>
            </form>
            
            <div class="settings-info">
                <h3>系统状态</h3>
                <ul>
                    <li>分销商总数: <?php echo $this->count_affiliates(); ?></li>
                    <li>待审核申请: <?php echo $this->count_pending_applications(); ?></li>
                    <li>总支付佣金: ¥<?php echo number_format($this->get_total_paid_commissions(), 2); ?></li>
                </ul>
            </div>
        </div>
        <?php
    }
    
    /**
     * 注册设置
     */
    public function register_settings() {
        // 注册基本设置
        register_setting('cultural_distribution_settings', 'cultural_distribution_settings');
        
        // 基本设置部分
        add_settings_section(
            'cultural_basic_settings',
            '基本设置',
            array($this, 'render_basic_settings_section'),
            'cultural-distribution'
        );
        
        // 佣金设置字段
        add_settings_field(
            'default_commission_rate',
            '默认佣金比例 (%)',
            array($this, 'render_default_commission_field'),
            'cultural-distribution',
            'cultural_basic_settings'
        );
        
        add_settings_field(
            'affiliate_registration',
            '分销商注册',
            array($this, 'render_registration_field'),
            'cultural-distribution',
            'cultural_basic_settings'
        );
        
        add_settings_field(
            'payment_methods',
            '支付方式',
            array($this, 'render_payment_methods_field'),
            'cultural-distribution',
            'cultural_basic_settings'
        );
    }
    
    /**
     * 渲染基本设置部分
     */
    public function render_basic_settings_section() {
        echo '<p>配置文创分销系统的基本参数</p>';
    }
    
    /**
     * 渲染默认佣金字段
     */
    public function render_default_commission_field() {
        $options = get_option('cultural_distribution_settings');
        $value = isset($options['default_commission_rate']) ? $options['default_commission_rate'] : '10';
        ?>
        <input type="number" 
               name="cultural_distribution_settings[default_commission_rate]" 
               value="<?php echo esc_attr($value); ?>" 
               min="1" max="50" step="0.5">
        <p class="description">新分销商的默认佣金比例</p>
        <?php
    }
    
    /**
     * 渲染注册设置字段
     */
    public function render_registration_field() {
        $options = get_option('cultural_distribution_settings');
        $auto_approve = isset($options['auto_approve']) ? $options['auto_approve'] : '0';
        ?>
        <label>
            <input type="checkbox" 
                   name="cultural_distribution_settings[auto_approve]" 
                   value="1" <?php checked($auto_approve, '1'); ?>>
            自动批准分销商申请
        </label>
        <p class="description">启用后,新申请的分销商将自动获得批准</p>
        <?php
    }
    
    /**
     * 渲染支付方式字段
     */
    public function render_payment_methods_field() {
        $options = get_option('cultural_distribution_settings');
        $methods = isset($options['payment_methods']) ? $options['payment_methods'] : array('alipay', 'wechat');
        ?>
        <label>
            <input type="checkbox" 
                   name="cultural_distribution_settings[payment_methods][]" 
                   value="alipay" <?php checked(in_array('alipay', $methods)); ?>>
            支付宝
        </label><br>
        <label>
            <input type="checkbox" 
                   name="cultural_distribution_settings[payment_methods][]" 
                   value="wechat" <?php checked(in_array('wechat', $methods)); ?>>
            微信支付
        </label><br>
        <label>
            <input type="checkbox" 
                   name="cultural_distribution_settings[payment_methods][]" 
                   value="bank" <?php checked(in_array('bank', $methods)); ?>>
            银行转账
        </label>
        <?php
    }
    
    /**
     * 添加佣金管理页面
     */
    public function add_commission_management_page() {
        add_submenu_page(
            null, // 不显示在菜单中
            '佣金管理',
            '佣金管理',
            'manage_options',
            'cultural-commissions',
            array($this, 'render_commissions_page')
        );
    }
    
    /**
     * 渲染佣金管理页面
     */
    public function render_commissions_page() {
        global $wpdb;
        $table_name = $wpdb->prefix . 'cultural_commissions';
        
        // 处理批量操作
        if (isset($_POST['action']) && $_POST['action'] === 'bulk_update') {
            $this->handle_bulk_commission_update();
        }
        
        // 获取佣金数据
        $commissions = $wpdb->get_results(
            "SELECT c.*, u.display_name, u.user_email 
             FROM $table_name c
             LEFT JOIN {$wpdb->users} u ON c.affiliate_id = u.ID
             ORDER BY c.created_at DESC
             LIMIT 100"
        );
        ?>
        <div class="wrap">
            <h1>佣金管理</h1>
            
            <form method="post" action="">
                <input type="hidden" name="action" value="bulk_update">
                
                <div class="tablenav top">
                    <div class="alignleft actions bulkactions">
                        <select name="bulk_action">
                            <option value="">批量操作</option>
                            <option value="mark_paid">标记为已支付</option>
                            <option value="mark_pending">标记为待结算</option>
                            <option value="delete">删除</option>
                        </select>
                        <input type="submit" class="button action" value="应用">
                    </div>
                </div>
                
                <table class="wp-list-table widefat fixed striped">
                    <thead>
                        <tr>
                            <td class="manage-column column-cb check-column">
                                <input type="checkbox" id="cb-select-all-1">
                            </td>
                            <th>ID</th>
                            <th>分销商</th>
                            <th>订单号</th>
                            <th>佣金金额</th>
                            <th>状态</th>
                            <th>创建时间</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($commissions as $commission): ?>
                        <tr>
                            <th scope="row" class="check-column">
                                <input type="checkbox" name="commission_ids[]" value="<?php echo $commission->id; ?>">
                            </th>
                            <td><?php echo $commission->id; ?></td>
                            <td>
                                <?php echo esc_html($commission->display_name); ?><br>
                                <small><?php echo esc_html($commission->user_email); ?></small>
                            </td>
                            <td>
本文来自网络,不代表柔性供应链服务中心立场,转载请注明出处:https://mall.org.cn/5887.html

EXCHANGES®作者

上一篇
下一篇

为您推荐

发表回复

联系我们

联系我们

18559313275

在线咨询: QQ交谈

邮箱: vip@exchanges.center

工作时间:周一至周五,9:00-17:30,节假日休息
返回顶部