我已經成功創建了新的送貨方式,併爲送貨區域提供了支持。但是,當我從下拉列表中選擇方法將其添加到區域時,它不會出現在「選擇的方法列表」中。如何在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