2017-07-18 26 views
6

yılında Gönderim Yöntemine çalışan özel bir ekleme nasıl başarıyla yeni gönderim yöntemi oluşturduk ve nakliye bölgeleri için desteklemeleri koşuluyla. Ancak, aşağı açılan menüden bölgeye eklenecek yöntemi seçmeye geldiğimde 'seçili yöntemler listesinde' görünmez. WooCommerce 3

Ben göstermek için bir screencast gif kaydedildi: işe yaramıyor neden

screencast gif

beni hayat çözemiyorum için. Ben standart yöntemlerle (Screencast GIF)

Herkes burada devam ve nasıl çalışır almak için neler olduğunu bilmek birini seçin, düzgün çalışır?

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

Bu 3+ WooCommerce içinde artık çalışmıyor, bu un bkz destek ipliği cevap verdi: //wordpress.org/support/topic/official-custom-shipping-class-doesnt-work-anymore-shipping-method-api/ – LoicTheAztec

+0

** WC_Shipping_Method 'calculate_shipping() 'çekirdek yöntemi ile bir çakışma ** ve orada Kod eklentinizde tanımlanmış olanı… Çözülmesi gereken nokta budur. ed. Çünkü ** Bu hata atılır **: * Sıkı Standartlar: WC_Request_Shipping_Quote_Method Beyanı :: calculate_shipping() WC_Shipping_Method :: /www/wp-content/plugins/request_shipping_quote_method.php üzerinde ($ paketini = Array) calculate_shipping uyumlu olmalıdır satır 18 * – LoicTheAztec

+0

@LoicTheAztec Bu konuda herhangi bir başarı? – omukiguy

cevap

2

"woocommerce_shipping_methods" üzerindeki yöntem anahtarı, E gönderim yöntemi kimliği Senin durumunda

: Sen

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

için değişmelidir: https:

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

Sadece bu cevabı tespit ettim - bu düzeltildi! Cevap için çok teşekkürler, çok takdir ediyorum – jhob101

3

Değişim bu hat

kamu fonksiyon calculate_shipping ($ paket = array()) {

bu hat

public function calculate_shipping($package) { 

: Burada

Ben from this official thread: Shipping Method API olması kod
+0

Bunun için teşekkürler. Bu kodu uyguladım ama hala çalışmıyor. Site şu anda uzaktadır, bu yüzden hangi hataların atıldığını göremiyorum, yerel olarak çalışıp sonra herhangi bir hata görüp göremeyeceğimi göreceğim. – jhob101

+0

Yani '$ package = array()' ı eklediğimde artık bir hata atılmıyor ancak davranış aynı kalıyor - gönderim yöntemi gönderim yöntemleri listesine eklenmiyor. – jhob101

+0

hangi hatayı alıyorsunuz? bcoz şimdi, paketlerinizin içindeki paketleri nasıl ele aldığınızı kontrol etmek zorundasınız, bcoz şimdi paketler dizisi – Alice