我已经成功创建了新的送货方式,并为送货区域提供了支持。但是,当我从下拉列表中选择方法将其添加到区域时,它不会出现在“选择的方法列表”中。如何在WooCommerce中添加自定义的送货方式3
我录一个screencast gif证明:
我不能为我的生命弄清楚为什么它不工作。如果我选择其中一种标准方法(Screencast GIF)
任何人都知道这里发生了什么以及如何使其工作?
下面的代码,我有from this official thread: Shipping Method API:
if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
function request_a_shipping_quote_init() {
if (! class_exists('WC_Request_Shipping_Quote_Method')) {
class WC_Request_Shipping_Quote_Method extends WC_Shipping_Method {
/**
* Constructor for your shipping class
*
* @access public
* @return void
*/
public function __construct() {
$this->id = 'request_a_shipping_quote'; // Id for your shipping method. Should be uunique.
$this->method_title = __('Request a Shipping Quote'); // Title shown in admin
$this->method_description = __('Shipping method to be used where the exact shipping amount needs to be quoted'); // Description shown in admin
$this->title = "Request a Shipping Quote"; // This can be added as an setting but for this example its forced.
$this->supports = array(
'shipping-zones'
);
$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'));
}
function init_form_fields() {
$this->form_fields = array(
'enabled' => array(
'title' => __('Enable', 'dc_raq'),
'type' => 'checkbox',
'description' => __('Enable this shipping method.', 'dc_raq'),
'default' => 'yes'
),
'title' => array(
'title' => __('Title', 'dc_raq'),
'type' => 'text',
'description' => __('Title to be displayed on site', 'dc_raq'),
'default' => __('Request a Quote', 'dc_raq')
),
);
}
/**
* calculate_shipping function.
*
* @access public
*
* @param mixed $package
*
* @return void
*/
public function calculate_shipping($packages = array()) {
$rate = array(
'id' => $this->id,
'label' => $this->title,
'cost' => '0.00',
'calc_tax' => 'per_item'
);
// Register the rate
$this->add_rate($rate);
}
}
}
}
add_action('woocommerce_shipping_init', 'request_a_shipping_quote_init');
function request_shipping_quote_shipping_method($methods) {
$methods['request_shipping_quote_shipping_method'] = 'WC_Request_Shipping_Quote_Method';
return $methods;
}
add_filter('woocommerce_shipping_methods', 'request_shipping_quote_shipping_method');
}
这不是在woocommerce 3+工作了,看到这个未回答支持线程:HTTPS: //wordpress.org/support/topic/official-custom-shipping-class-doesnt-work-anymore-shipping-method-api/ – LoicTheAztec
**与WC_Shipping_Method'calculate_shipping()'核心方法**有冲突,并且在您的代码插件中定义的那个...这是需要解决的问题编辑。因为**抛出了这个错误**:*严格标准:WC_Request_Shipping_Quote_Method :: calculate_shipping()声明应该与/www/wp-content/plugins/request_shipping_quote_method.php中的WC_Shipping_Method :: calculate_shipping($ package = Array)兼容。 line 18 * – LoicTheAztec
@LoicTheAztec有没有这方面的成功? – omukiguy