wordpress Woocommerce添加多种运输方式

dfty9e19  于 2023-01-16  发布在  WordPress
关注(0)|答案(2)|浏览(186)

我使用下面的代码(由woocommerce API提供)添加自定义航运方法,它是工作,但现在我想添加另一个航运方法,我尝试复制粘贴相同的代码与不同的类名,但它实际上不工作,第二个方法是取代第一个
我想知道如何创建另一种送货方式?谢谢

function your_shipping_method_init() {
    if ( ! class_exists( 'WC_Your_Shipping_Method' ) ) {
        class WC_Your_Shipping_Method extends WC_Shipping_Method {
            /**
             * Constructor for your shipping class
             *
             * @access public
             * @return void
             */
            public function __construct() {
                $this->id                 = 'vip_rate'; // Id for your shipping method. Should be uunique.
                $this->method_title       = __( 'VIP Shipping Rate' );  // Title shown in admin
                $this->method_description = __( '$35 flate rate' ); // Description shown in admin

                $this->enabled            = "yes"; // This can be added as an setting but for this example its forced enabled
                $this->title              = "VIP Shipping rate"; // This can be added as an setting but for this example its forced.

                $this->init();
            }

            /**
             * Init your settings
             *
             * @access public
             * @return void
             */
            function init() {
                // Load the settings API
                $this->init_form_fields(); // This is part of the settings API. Override the method to add your own settings
                $this->init_settings(); // This is part of the settings API. Loads settings you previously init.

                // Save settings in admin if you have any defined
                add_action( 'woocommerce_update_options_shipping_' . $this->id, array( $this, 'process_admin_options' ) );
            }

            /**
             * calculate_shipping function.
             *
             * @access public
             * @param mixed $package
             * @return void
             */
            public function calculate_shipping( $package ) {

                $cost=35; 

                $rate = array(
                    'id' => $this->id,
                    'label' => $this->title,
                    'cost' => round($cost,2),
                    'calc_tax' => 'per_item'
                );

                // Register the rate
                $this->add_rate( $rate );
            }
        }
    }
}

add_action( 'woocommerce_shipping_init', 'your_shipping_method_init' );

function add_your_shipping_method( $methods ) {
    $methods[] = 'WC_Your_Shipping_Method';
    return $methods;
}

add_filter( 'woocommerce_shipping_methods', 'add_your_shipping_method' );
ozxc1zmp

ozxc1zmp1#

我也遇到了同样的问题,我的解决方案是创建一个新类,从WC_Shipping_Method扩展而来,并在那里保留所有相同的代码,我创建了3个新类,扩展新类,任何一个都有自己的ID和方法类型
这不是最好的解决方案,但它比重复N次类的相同代码更有效

jw5wzhpr

jw5wzhpr2#

好的,我已经通过重命名类名成功地添加了另一个运送方法。以前我可能做错了什么
然而,我想知道是否有一些更好的方法来做这件事,因为我已经复制粘贴整个代码块两次,我的背景是不是在OOP然而,我认为这不是正确的方式来做这件事

相关问题