You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向WooCommerce购物车添加可正常选择的自定义配送方式

WooCommerce自定义配送方式无法生效修复方案

核心问题

你提供的代码存在3个直接导致无法正常工作的问题:

  • 代码包含HTML转义字符:>、"是网页渲染后的转义符号,直接放入PHP文件会触发语法错误,代码无法正常运行
  • 缺失实例设置表单方法:你声明了支持配送区域的实例设置,但没有实现init_form_fields方法定义配置项,后台设置无法正常保存
  • 配置参数硬编码:配送方式标题、启用状态都写死在代码中,没有读取后台的实例配置,修改后台参数不会生效

修复后可用代码

if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
    function costs_specified_init() {
        if ( ! class_exists( 'Shipping_Costs_Will_BE_Specified' ) ) {
            class Shipping_Costs_Will_BE_Specified extends WC_Shipping_Method {
                /**
                 * 配送方式构造函数
                 * @access public
                 * @return void
                 */
                public function __construct($instance_id = 0) {
                    $this->id                 = 'specified_price'; 
                    $this->method_title       = __( '指定配送价格' ); 
                    $this->method_description = __( '用于自定义指定区域的配送价格' );
                    $this->instance_id        = absint($instance_id);
                    $this->supports           = array(
                        'shipping-zones',
                        'instance-settings',
                        'instance-settings-modal',
                    );
                    $this->init();
                    // 读取实例配置
                    $this->title = $this->get_option('title');
                    $this->enabled = 'yes';
                }
                /**
                 * 初始化配置
                 * @access public
                 * @return void
                 */
                function init() {
                    $this->init_form_fields();
                    $this->init_settings();
                    add_action( 'woocommerce_update_options_shipping_' . $this->id, array( $this, 'process_admin_options' ) );
                }
                /**
                 * 定义后台配置表单字段
                 * @access public
                 * @return void
                 */
                public function init_form_fields() {
                    $this->instance_form_fields = array(
                        'title' => array(
                            'title' => __('配送方式名称'),
                            'type' => 'text',
                            'default' => __('指定配送价格'),
                            'desc_tip' => true,
                            'description' => __('前端购物车、结算页显示给用户的配送方式名称'),
                        ),
                        'cost' => array(
                            'title' => __('配送费用'),
                            'type' => 'price',
                            'default' => '0',
                            'desc_tip' => true,
                            'description' => __('该配送方式的运费金额'),
                        )
                    );
                }
                /**
                 * 计算运费
                 * @access public
                 * @param mixed $package
                 * @return void
                 */
                public function calculate_shipping( $package = array() ) {
                    $rate = array(
                        'label' => $this->title,
                        'cost' => $this->get_option('cost', 0),
                        'calc_tax' => 'per_item'
                    );
                    $this->add_rate( $rate );
                }
            }
        }
    }
    add_action( 'woocommerce_shipping_init', 'costs_specified_init' );
    function add_your_shipping_method( $methods ) {
        $methods['specified_price'] = 'Shipping_Costs_Will_BE_Specified';
        return $methods;
    }
    add_filter( 'woocommerce_shipping_methods', 'add_your_shipping_method' );
}

生效操作步骤

  • 将修复后的代码放入主题functions.php文件,或者自定义插件的主文件中
  • 进入WooCommerce后台→设置→配送,找到目标配送区域,点击「添加配送方式」,选择「指定配送价格」后保存
  • 点击该配送方式右侧的编辑按钮,设置前端显示名称、配送费用后保存配置
  • 清理网站缓存后测试:用户收货地址属于该配送区域时,购物车、结算页会自动渲染该配送方式的单选选项,无需额外开发前端代码

内容的提问来源于stack exchange,提问作者Kristaps Vētra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:27:05