2017-07-18 4 views
6

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:

screencast gif

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'); 
} 
+0

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

+0

** 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

+0

@LoicTheAztec Irgendein Erfolg damit? – omukiguy

Antwort

2

Der Methodenschlüssel auf "woocommerce_shipping_methods" sollte mit th übereinstimmen e Versandart id

In Ihrem Fall: Sie

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'); 

ändern sollte:

function request_shipping_quote_shipping_method($methods) { 
    $methods['request_a_shipping_quote'] = 'WC_Request_Shipping_Quote_Method'; 

    return $methods; 
} 

add_filter('woocommerce_shipping_methods', 'request_shipping_quote_shipping_method'); 
+0

Nur gerade diese Antwort entdeckt - das hat es behoben! Vielen Dank für die Antwort, sehr geschätzt – jhob101

3

Ändern Sie diese Zeile

public function calculate_shipping($package) { 

zu dieser Linie

public function calculate_shipping ($ -Paket = array()) {

+0

Danke dafür. Ich habe diesen Code implementiert, aber es funktioniert immer noch nicht. Die Site ist momentan remote, so dass ich nicht sehen kann, welche Fehler geworfen werden, sie wird lokal funktionieren und sehen, ob ich dann irgendwelche Fehler sehen kann. – jhob101

+0

Also, wenn ich '$ package = array()' 'hinzufügen, wird jetzt kein Fehler ausgegeben, aber das Verhalten bleibt gleich - die Versandmethode wird nicht zur Versandliste hinzugefügt. – jhob101

+0

Welchen Fehler bekommen Sie? bcoz jetzt müssen Sie überprüfen, wie Sie Pakete in Ihrer Funktion behandelt haben, bcoz jetzt ist es Array von Paketen – Alice

Verwandte Themen