init(); add_action('admin_init', array($this, 'register_settings')); add_action('wp_ajax_czl_test_connection', array($this, 'handle_test_connection')); // 添加自定义订单状态 add_action('init', array($this, 'register_custom_order_statuses')); add_filter('wc_order_statuses', array($this, 'add_custom_order_statuses')); // 添加订单状态自动更新 add_action('wp_ajax_czl_update_order_status', array($this, 'update_order_status')); add_action('wp_ajax_nopriv_czl_update_order_status', array($this, 'update_order_status')); // 添加订单详情页面的轨迹显示 add_action('woocommerce_order_details_after_order_table', array('CZL_Tracking', 'display_tracking_info')); add_action('woocommerce_admin_order_data_after_shipping_address', array('CZL_Tracking', 'display_admin_tracking_info')); // 添加定时任务 add_action('czl_update_tracking_info', array($this, 'schedule_tracking_updates')); // 注册定时任务 if (!wp_next_scheduled('czl_update_tracking_info')) { wp_schedule_event(time(), 'hourly', 'czl_update_tracking_info'); } } private function init() { // 加载依赖文件 $this->load_dependencies(); // 初始化产品字段 new CZL_Product_Fields(); // 初始化钩子 $this->init_hooks(); // 添加菜单 add_action('admin_menu', array($this, 'add_admin_menu')); } private function load_dependencies() { require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-api.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-rate-calculator.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-shipping-method.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-install.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-settings.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-order-handler.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-order-data.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-label.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-tracking.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-product-fields.php'; require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-order.php'; } private function init_hooks() { add_action('woocommerce_shipping_init', array($this, 'init_shipping_method')); add_filter('woocommerce_shipping_methods', array($this, 'add_shipping_method')); // 订单处理钩子 $order_handler = new CZL_Order_Handler(); add_action('woocommerce_order_status_processing', array($order_handler, 'create_shipment')); add_action('woocommerce_order_status_cancelled', array($order_handler, 'cancel_shipment')); // 运单标签钩子 add_filter('woocommerce_order_actions', array('CZL_Label', 'add_print_actions'), 10, 2); add_action('wp_ajax_czl_print_label', array('CZL_Label', 'handle_print_request')); // 跟踪信息显示钩子 add_action('woocommerce_order_details_after_order_table', array('CZL_Tracking', 'display_tracking_info')); add_action('woocommerce_admin_order_data_after_shipping_address', array('CZL_Tracking', 'display_admin_tracking_info')); // 添加订单操作 add_filter('woocommerce_order_actions', array($this, 'add_order_actions'), 10, 2); // 添加AJAX处理 add_action('wp_ajax_czl_create_shipment', array($this, 'handle_create_shipment')); add_action('wp_ajax_czl_bulk_create_shipment', array($this, 'handle_bulk_create_shipment')); } public function init_shipping_method() { if (!class_exists('WC_CZL_Shipping_Method')) { require_once WOO_CZL_EXPRESS_PATH . 'includes/class-czl-shipping-method.php'; } } public function add_shipping_method($methods) { if (class_exists('WC_CZL_Shipping_Method')) { $methods['czl_express'] = 'WC_CZL_Shipping_Method'; } return $methods; } public function add_admin_menu() { add_menu_page( __('CZL Express', 'woo-czl-express'), __('CZL Express', 'woo-czl-express'), 'manage_woocommerce', 'woo-czl-express', array($this, 'render_settings_page'), 'dashicons-airplane' ); add_submenu_page( 'woo-czl-express', __('基本设置', 'woo-czl-express'), __('基本设置', 'woo-czl-express'), 'manage_woocommerce', 'woo-czl-express', array($this, 'render_settings_page') ); add_submenu_page( 'woo-czl-express', __('订单管理', 'woo-czl-express'), __('订单管理', 'woo-czl-express'), 'manage_woocommerce', 'czl-express-orders', array($this, 'render_orders_page') ); add_submenu_page( 'woo-czl-express', __('产品分组', 'woo-czl-express'), __('产品分组', 'woo-czl-express'), 'manage_options', 'czl-product-groups', array($this, 'render_product_groups_page') ); add_submenu_page( 'woo-czl-express', __('汇率设置', 'woo-czl-express'), __('汇率设置', 'woo-czl-express'), 'manage_options', 'czl-exchange-rates', array($this, 'render_exchange_rates_page') ); } public function render_product_groups_page() { // 处理表单提交 if ($_SERVER['REQUEST_METHOD'] === 'POST' && check_admin_referer('czl_save_product_groups', 'czl_product_groups_nonce')) { $groups = array(); if (!empty($_POST['groups'])) { foreach ($_POST['groups'] as $key => $group) { if (empty($group['groupName'])) continue; $prefixes = array_filter(array_map('trim', explode("\n", $group['prefixes']))); if (empty($prefixes)) continue; $groups[sanitize_key($group['groupName'])] = array( 'enabled' => !empty($group['enabled']), 'groupName' => sanitize_text_field($group['groupName']), 'prefixes' => array_map('sanitize_text_field', $prefixes) ); } } update_option('czl_product_groups', $groups); add_settings_error('czl_messages', 'czl_message', __('产品分组设置已保存', 'woo-czl-express'), 'updated'); } // 显示设置页面 require_once WOO_CZL_EXPRESS_PATH . 'admin/views/product-groups.php'; } public function admin_page() { require_once WOO_CZL_EXPRESS_PATH . 'admin/views/admin-page.php'; } /** * 添加订单操作按钮 */ public function add_order_actions($actions, $order) { // 检查是否已创建运单 $tracking_number = get_post_meta($order->get_id(), '_czl_tracking_number', true); if ($tracking_number) { $actions['czl_cancel_shipment'] = __('取消CZL运单', 'woo-czl-express'); } else { $actions['czl_create_shipment'] = __('创建CZL运单', 'woo-czl-express'); } return $actions; } public function register_settings() { // 注册设置组 register_setting( 'czl_options_group', // 设置组名称 'czl_username' // 用户名选项 ); register_setting( 'czl_options_group', 'czl_password' ); register_setting( 'czl_options_group', 'czl_rate_adjustment' ); // 添加设置分节 add_settings_section( 'czl_api_settings', __('API设置', 'woo-czl-express'), null, 'czl_options' ); // 添加设置字段 add_settings_field( 'czl_username', __('用户名', 'woo-czl-express'), array($this, 'username_field_callback'), 'czl_options', 'czl_api_settings' ); add_settings_field( 'czl_password', __('密码', 'woo-czl-express'), array($this, 'password_field_callback'), 'czl_options', 'czl_api_settings' ); // 添加运费调整设置分节 add_settings_section( 'czl_rate_settings', __('运费设置', 'woo-czl-express'), null, 'czl_options' ); add_settings_field( 'czl_rate_adjustment', __('运费调整公式', 'woo-czl-express'), array($this, 'rate_adjustment_field_callback'), 'czl_options', 'czl_rate_settings' ); } public function username_field_callback() { $value = get_option('czl_username'); echo ''; } public function password_field_callback() { $value = get_option('czl_password'); echo ''; } public function rate_adjustment_field_callback() { $value = get_option('czl_rate_adjustment'); ?>
- 10% + 10 (运费乘以1.1后加10)
- 20% (运费乘以1.2)
- +15 (运费加15)
' . esc_html($tracking_number) . '' ); ?>
' . esc_html($tracking_number) . '' ); ?>