Ich habe erfolgreich eine neue Versandmethode erstellt und unterstützt es für Versandzonen. Wenn ich jedoch die Methode aus dem Dropdown-Menü auswähle, um sie der Zone hinzuzufügen, erscheint sie nicht in der Liste der ausgewählten Methoden.So fügen Sie eine benutzerdefinierte funktionierende Versandmethode in WooCommerce 3
nahm ich ein screencast gif zu demonstrieren:
Ich kann nicht für das Leben von mir herauszufinden, warum es nicht funktioniert. Es funktioniert gut, wenn ich eine der Standardmethoden (Screencast GIF) wählen
Wer weiß, was hier vorgeht und wie man es zur Arbeit bringt?
Hier ist der Code, den ich habe 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');
}
Arbeits Dies wird nicht mehr in WooCommerce 3+ finden Sie in diesem un beantwortet Unterstützung thread: https: //wordpress.org/support/topic/official-custom-shipping-class-doesnt-work-anymeshore-shipping-method-api/ – LoicTheAztec
** Es gibt einen Konflikt mit der WC_Shipping_Method 'calculate_shipping()' Kernmethode ** und dasjenige, das in deinem Code-Plugin definiert ist ... Das ist der Punkt, der gelöst werden muss ed. Weil ** dieser Fehler ausgelöst wird **: * Strikte Standards: Die Deklaration von WC_Request_Shipping_Quote_Method :: calculate_shipping() sollte mit WC_Shipping_Method :: calculate_shipping ($ package = Array) in /www/wp-content/plugins/request_shipping_quote_method.php on kompatibel sein Linie 18 * – LoicTheAztec
@LoicTheAztec Irgendein Erfolg damit? – omukiguy