วิธีเพิ่มวิธีการจัดส่งแบบกำหนดเองใน WooCommerce

เผยแพร่แล้ว: 2020-09-01

WooCommerce เพิ่มวิธีการจัดส่งแบบกำหนดเอง หากคุณคุ้นเคยกับ WooCommerce คุณจะรู้ว่ามันเป็นโซลูชันอีคอมเมิร์ซฟรีที่ยอดเยี่ยม พร้อมชุดคุณสมบัติที่มีประโยชน์อย่างเหลือเชื่อ สิ่งที่โดดเด่นคือ WooCommerce ได้รับการพัฒนาโดยคำนึงถึงความสามารถในการขยาย คล้ายกับโมดูลของ WordPress

อย่างไรก็ตาม หากคุณต้องการอะไรเพิ่มเติมจาก WooCommerce คุณมักจะพบว่า WooCommerce ไม่ได้ให้ทุกสิ่งที่คุณต้องการ ตัวอย่างเช่น หากคุณต้องการเพิ่มวิธีการจัดส่งแบบกำหนดเอง อย่างไรก็ตาม ไม่ต้องกังวลเหมือนในบทช่วยสอนสั้นๆ นี้ คุณจะได้เรียนรู้วิธีสร้างวิธีการจัดส่งอย่างง่ายสำหรับ WooCommerce ซึ่งจะคำนวณต้นทุนในการจัดส่ง

นอกจากนี้ คุณจะได้เรียนรู้วิธีเพิ่มข้อจำกัดบางอย่างให้กับปลั๊กอินของเรา เพื่อให้วิธีการจัดส่งสามารถใช้ได้ในบางประเทศ

กฎการจัดส่งแบบกำหนดเองสำหรับวิธีการจัดส่ง

ในส่วนนี้ เราจะสร้างกฎการจัดส่งแบบกำหนดเองสำหรับวิธีการจัดส่งที่เราจะใช้เพื่อสร้างรหัส เราจะกำหนดวิธีการจัดส่งที่จะคำนวณต้นทุนและสถานที่ที่สามารถจัดส่งได้ ซึ่งหมายความว่าต้นทุนจะถูกกำหนดโดยน้ำหนักและโซนที่เราจำเป็นต้องจัดส่งไป

สำหรับตัวอย่างนี้ เราจะจัดส่งไปยังสหรัฐอเมริกา แคนาดา เยอรมนี สหราชอาณาจักร อิตาลี สเปน และเคนยา เคนยาจะเป็นโซน 0 ของเราในราคา $10, อิตาลีโซน 1 ราคา $30, สเปนโซน 2 ในราคา $50, โซนสหราชอาณาจักร 2 ราคา $50, สหรัฐอเมริกา และโซน 3 ของแคนาดาในราคา $70

สำหรับน้ำหนัก เราจะกำหนดราคาดังนี้: 0 - 10 กก. ฟรี, 11 - 30 กก. สำหรับ $5, 31-50 กก. สำหรับ 10 USD และ 51-100 กก. สำหรับ 20 USD

คุณอาจพร้อมที่จะเริ่มเขียนโค้ดแล้ว แต่ยังไม่ใช่ตอนนี้! ก่อนอื่น คุณต้องเรียนรู้เกี่ยวกับ WooCommerce Shipping API เมื่อคุณต้องการสร้างวิธีการจัดส่งแบบกำหนดเอง คุณต้องขยายคลาสจากคลาสนามธรรมของ WooCommerce WC_Shipping_Method มีคุณลักษณะที่กำหนดไว้บางประการ ได้แก่ :

  • $id : ID (slug, keyword) ของการจัดส่งของเราซึ่งจำเป็น
  • $number : นี่คือรหัสจำนวนเต็ม
  • $method_title : ชื่อการจัดส่งของเราที่แสดงในส่วนผู้ดูแลระบบ
  • $method_description : คำอธิบายสั้นๆ เกี่ยวกับการจัดส่งของเราที่แสดงในส่วนผู้ดูแลระบบ (ไม่บังคับ)
  • $enabled : String Boolean "ใช่" หรือ "ไม่ใช่" ซึ่งจะให้ข้อมูลว่าการจัดส่งของเราเปิดใช้งานอยู่หรือไม่ และสามารถใช้ได้หรือไม่
  • $title : ใช้เพื่อแสดงชื่อการจัดส่งของเราบนไซต์ของเรา
  • $availability : สิ่งนี้กำหนดว่าสามารถจัดส่งได้หรือไม่
  • $countries : อาร์เรย์ของประเทศที่เปิดใช้งานวิธีนี้ ค่าดีฟอลต์คืออาร์เรย์ว่าง
  • $tax_status : ค่าเริ่มต้นต้องเสียภาษี หากสินค้าต้องเสียภาษี จะมีการเรียกเก็บภาษี
  • $fee : ค่าเริ่มต้นคือ 0
  • $minimum_fee : ค่าธรรมเนียมขั้นต่ำสำหรับวิธีการและค่าเริ่มต้นเป็นโมฆะ
  • $has_settings : กำหนดว่าเมธอดนี้มีการตั้งค่าใดๆ หรือไม่ ค่าเริ่มต้นเป็นจริง
  • $supports : อาร์เรย์ที่มีคุณสมบัติที่วิธีนี้รองรับ ค่าดีฟอลต์คืออาร์เรย์ว่าง
  • $rates : อาร์เรย์ของอัตราและต้องเติมข้อมูลนี้เพื่อลงทะเบียนค่าจัดส่ง ค่าดีฟอลต์คืออาร์เรย์ว่าง

วิธีการที่กำหนดไว้ใน WC_Shipping_Method คือ:

  • is_taxable() : ส่งคืนไม่ว่าเราต้องคำนวณภาษีจากอัตราค่าจัดส่งหรือไม่
  • add_rate( $args = array() ) : สิ่งนี้จะผลักดันอัตราค่าจัดส่งที่กำหนดไว้ในพารามิเตอร์ $args ลงในแอตทริบิวต์ $rates
  • has_settings() : ส่งคืนค่าแอตทริบิวต์ $has_settings
  • is_available() : การส่งคืนสินค้าหากมีการส่งสินค้า และมีการตั้งค่าประเทศในแอตทริบิวต์ $countries และแอตทริบิวต์ $availability ถูกตั้งค่าเป็นค่า รวมทั้ง เฉพาะ หรือไม่รวม จะส่งคืนค่าจริงหรือเท็จ หากประเทศนั้นพร้อมสำหรับการจัดส่ง .
  • get_title() : ส่งคืนชื่อการจัดส่งนี้
  • get_fee( $fee, $total ) : ส่งคืนค่าค่าธรรมเนียมสำหรับการจัดส่งนี้โดยพิจารณาจาก $fee ที่แยกวิเคราะห์และ $total
  • supports( $feature ) : ส่งคืนหากวิธีการจัดส่งนี้รองรับคุณสมบัติหรือไม่

เนื่องจากคลาส WC_Shipping_Method ขยายคลาส WC_Settings_API จึงมีแอตทริบิวต์และวิธีการอื่นๆ ซึ่งฉันจะไม่อธิบายที่นี่เพื่อจุดประสงค์ที่เรียบง่าย

นอกจากนี้ ยังต้องกำหนดวิธีการอื่นๆ เพื่อให้การจัดส่งสามารถรับหรือตั้งค่าและคำนวณต้นทุนจริงของการจัดส่งได้ วิธีการเหล่านี้ระบุไว้ที่นี่:

  • init() : สร้างฟิลด์แบบฟอร์มและการตั้งค่า อย่างไรก็ตาม มันสามารถตั้งชื่อต่างกันได้ ตราบใดที่เราใช้เมธอดที่อยู่ภายในและเรียกมันในเมธอด __constructor
  • calculate_shipping( $package ) : วิธีนี้ใช้ในการคำนวณต้นทุนสำหรับการจัดส่งนี้ และแพ็คเกจคืออาร์เรย์ที่มีสินค้าที่จะจัดส่ง

ฉันต้องการให้ความสำคัญกับวิธีการคำนวณ_การจัดส่ง สำหรับตัวอย่าง เราจะใช้วิธีนี้และเพิ่มลงในวิธี add_rate วิธีนี้จะยอมรับอาร์เรย์ที่มีตัวเลือกต่างๆ เช่น:

  • id : นี่คือ ID ของอัตรา
  • label : นี่คือป้ายสำหรับอัตรา
  • cost : จำนวนเงินที่จัดส่ง
  • taxes : ยอมรับอาร์เรย์ของภาษีหรือไม่มีเลย ดังนั้น WooCommerce จึงคำนวณภาษี หากไม่ต้องการให้รับภาษีก็รับเท็จได้
  • calc_tax : ยอมรับ per_order หรือ per_item หากคุณใช้ per_item คุณจะต้องระบุอาร์เรย์ของค่าใช้จ่าย

เราจะใช้ตัวกรอง WordPress เพื่อรับอาร์เรย์ที่เพิ่มวิธีการจัดส่งของเราในอาร์เรย์ของวิธีที่ลงทะเบียนโดยส่งชื่อคลาสของเราโดยใช้ตัวกรอง WordPress ที่กำหนดไว้ในปลั๊กอิน WooCommerce ตัวกรองเรียกว่า woocommerce_shipping_methods

ด้วยสิ่งนี้บนโต๊ะ ให้เราเข้าไปในส่วนการเขียนโค้ดของบทช่วยสอนสั้นๆ นี้ เพื่อที่คุณจะได้เข้าใจแนวคิดทั้งหมดในตัวอย่าง PHP ที่ฉันจะแชร์

ก) ขั้นตอนในการสร้างคลาสการขนส่งใหม่

ในส่วนนี้ เราจะสร้างวิธีการจัดส่งของเราเป็นปลั๊กอินใหม่ที่ขยาย WooCommerce

  1. ขั้นแรก คุณต้องเปิด wp-content > plugins และสร้างโฟลเดอร์ใหม่ สำหรับสิ่งนี้ ฉันจะใช้ชื่อ njengah -shipping
  2. จากนั้น คุณต้องสร้างไฟล์ที่มีชื่อเดียวกันว่า njengah –shipping.php
  3. ในไฟล์นี้ ให้เพิ่มรหัสต่อไปนี้:
 <?php

/**
* ชื่อปลั๊กอิน: Njengah Shipping
* URI ของปลั๊กอิน: https://njengah.com/plugins/
* คำอธิบาย: 
* เวอร์ชัน: 1.0.0
* ผู้แต่ง: Joe Njenga
* URI ผู้แต่ง: https://njengah.com
ส
*/

ถ้า ( ! กำหนด ( 'WPINC' ) ) {

ตาย;

}
/*
* ตรวจสอบว่า WooCommerce เปิดใช้งานอยู่หรือไม่
*/
if (in_array('woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option('active_plugins' ) ) ) ) {

ฟังก์ชัน njengahplus_shipping_method () {

ถ้า ( ! class_exists ( 'NjengahPlus_Shipping_Method' ) ) {

คลาส NjengahPlus_Shipping_Method ขยาย WC_Shipping_Method {

/**

* ตัวสร้างสำหรับคลาสการจัดส่งของคุณ

*

* @เข้าถึงสาธารณะ

* @return เป็นโมฆะ

*/

ฟังก์ชั่นสาธารณะ __construct () {

$this->id = 'njengahplus';

$this->method_title = __( 'NjengahPlus Shipping', 'njengahplus' );

$this->method_description = __( 'วิธีการจัดส่งแบบกำหนดเองสำหรับ NjengahPlus', 'njengahplus' );

$this->init();

$this->enabled = isset( $this->settings['enabled'] ) ? $this->settings['enabled'] : 'ใช่';

$this->title = isset( $this->settings['title'] ) ? $this->settings['title'] : __( 'NjengahShipping', 'njengahplus' );

}

/**
* เริ่มการตั้งค่าของคุณ
*
* @เข้าถึงสาธารณะ

* @return เป็นโมฆะ

*/

ฟังก์ชัน init() {

// โหลดการตั้งค่า API

$this->init_form_fields();

$this->init_settings();

// บันทึกการตั้งค่าในผู้ดูแลระบบหากคุณกำหนดไว้

add_action( 'woocommerce_update_options_shipping_' . $this->id, array( $this, 'process_admin_options' ) );

}


/**

* กำหนดฟิลด์การตั้งค่าสำหรับการจัดส่งนี้

* @return เป็นโมฆะ

*/

ฟังก์ชัน init_form_fields () {

// เราจะเพิ่มการตั้งค่าของเราที่นี่

}

/**
* ฟังก์ชันนี้ใช้เพื่อคำนวณค่าจัดส่ง ภายในฟังก์ชันนี้ เราสามารถตรวจสอบน้ำหนัก ขนาด และพารามิเตอร์อื่นๆ ได้
*
* @เข้าถึงสาธารณะ
* @param ผสม $package
 @กลับมาเป็นโมฆะ
*/

ฟังก์ชันสาธารณะคำนวณ _shipping( $package ) {


// เราจะเพิ่มราคา อัตรา และตรรกะในที่นี้

}

}

}

}


add_action( 'woocommerce_shipping_init', 'njengahplus_shipping_method' );

ฟังก์ชัน add_njengahplus_shipping_method( $methods ) {

$methods[] = 'NjengahPlus_Shipping_Method';
ส่งคืนวิธี $;
}

add_filter( 'woocommerce_shipping_methods', 'add_njengahplus_shipping_method' );

}

มันทำงานอย่างไร

  • ก่อนอื่นเราตรวจสอบว่ามีการกำหนด WPINC คงที่หรือไม่ หากไม่ได้กำหนดไว้ แสดงว่ามีคนพยายามเข้าถึงไฟล์นี้โดยตรงหรือจากตำแหน่ง ซึ่งไม่ใช่ WordPress
  • จากนั้นเราต้องตรวจสอบว่า WooCommerce ทำงานอยู่หรือไม่ เรากำลังตรวจสอบว่า woocommerce.php อยู่ในอาร์เรย์ของปลั๊กอินที่ใช้งานอยู่ซึ่งบันทึกไว้ในฐานข้อมูลภายใต้ตัวเลือก active_plugins หรือไม่
  • woocommerce_shipping_init เป็นการดำเนินการหลักสำหรับ WooCommerce Shipping ซึ่งรวมถึงคลาสการจัดส่งทั้งหมดก่อนที่จะสร้างอินสแตนซ์ การใช้การกระทำนี้จะช่วยให้แน่ใจว่าวิธีการจัดส่งของเราจะถูกรวมไว้หลังจากที่ WooCommerce ได้รับการเริ่มต้นและอยู่ในตำแหน่งที่เหมาะสมสำหรับ WooCommerce ที่จะใช้
  • เมธอด __construct จะตั้งค่าแอตทริบิวต์ทั่วไปบางส่วน และบางส่วนสามารถเขียนทับได้ง่ายหลังจากโหลดการตั้งค่าจากฐานข้อมูลในเมธอด init
  • วิธีอื่นๆ จะเว้นว่างไว้เพราะเราจะกำหนดในภายหลังในบทช่วยสอน

จากนั้นคุณต้องเปิดใช้งานปลั๊กอินโดยใช้ขั้นตอนที่แสดงด้านล่าง:

  1. ลงชื่อเข้าใช้ไซต์ WordPress และเข้าถึง แดชบอร์ด ในฐานะผู้ดูแลระบบ
  2. จากเมนู Dashboard ให้คลิกที่ Plugins และเปิดใช้งาน Njengah shipping ดังที่แสดงด้านล่าง: การเปิดใช้งานปลั๊กอิน
  3. หลังจากเปิดใช้งานปลั๊กอินแล้ว ให้ไปที่ WooCommerce > Settings คลิกที่แท็บ WooCommerce จากนั้นคลิกที่ NjengahPlus shipping คุณควรจะเห็นสิ่งนี้: ผลลัพธ์สำหรับรหัสแรก

b) การตั้งค่าความพร้อมใช้งานของประเทศ

วิธีการจัดส่งที่เราสร้างขึ้นจะใช้ได้เฉพาะในรายชื่อประเทศที่กำหนดไว้ก่อนหน้านี้เท่านั้น

  1. เพิ่มสิ่งนี้ในวิธีการ __construct :
 <?php

//...

$this->method_description = __( 'วิธีการจัดส่งแบบกำหนดเองสำหรับ NjengahPlus', 'njengahplus' );

// ความพร้อมใช้งาน & ประเทศ

$this->availability = 'รวม';

$this->ประเทศ = array(

'US', // สหรัฐอเมริกา

'CA', // แคนาดา

'DE', // เยอรมนี

'GB', // สหราชอาณาจักร

'IT', // อิตาลี

'ES', // สเปน

'HR' // เคนยา

);

$this->init();

//...

รหัสทำงานอย่างไร

แอตทริบิวต์ความพร้อมจำหน่ายสินค้าถูกตั้งค่าเป็น "รวม" เพื่อให้การจัดส่งนี้มีให้สำหรับประเทศในแอตทริบิวต์ประเทศเท่านั้น

WooCommerce จะตรวจสอบว่าประเทศที่จัดส่งรวมอยู่ในประเทศแอตทริบิวต์หรือไม่

การสร้างการตั้งค่า

คุณต้องคัดลอกโค้ดนี้และเติมวิธีการของเราใน init_form_fields:

 <?php



ฟังก์ชัน init_form_fields () {

$this->form_fields = array(

'เปิดใช้งาน' => อาร์เรย์ (

'title' => __( 'เปิดใช้งาน', 'njengahplus' ),

'type' => 'ช่องทำเครื่องหมาย',

'description' => __( 'เปิดใช้งานการจัดส่งนี้', 'njengahplus' ),

'ค่าเริ่มต้น' => 'ใช่'

),


'title' => อาร์เรย์ (

'title' => __( 'ชื่อ', 'njengahplus' ),

'type' => 'ข้อความ',

'description' => __( 'ชื่อที่จะแสดงบนเว็บไซต์', 'njengahplus' ),

'default' => __( 'NjengahPlus Shipping', 'njengahplus' )

),


);


}

หากต้องการตรวจสอบผลลัพธ์ ให้ทำตามขั้นตอนเหล่านี้:

  1. ลงชื่อเข้าใช้ไซต์ WordPress ของคุณและเข้าถึง แดชบอร์ด ในฐานะผู้ดูแลระบบจากเมนูแดชบอร์ด คลิกที่ WooCommerce > Settings
  2. คลิกที่แท็บ Shipping และคลิกที่ NjengahPlus Shipping ตามที่แสดงด้านล่าง: Njengah บวกค่าจัดส่ง
  3. เปิดใช้งานช่องทำเครื่องหมายและบันทึกการเปลี่ยนแปลง

เราสามารถกำหนดวิธีการจัดส่งให้จัดส่งได้ไม่เกิน 100 กก. จากนั้นเราจะอนุญาตให้แก้ไขในการตั้งค่าหากกฎนั้นเปลี่ยนแปลงในไม่ช้า หลังจากตั้งค่านี้แล้ว รหัสการตั้งค่า จะมีลักษณะดังนี้:

 <?php




ฟังก์ชัน init_form_fields () {

$this->form_fields = array(

'เปิดใช้งาน' => อาร์เรย์ (

'title' => __( 'เปิดใช้งาน', 'njengahplus' ),

'type' => 'ช่องทำเครื่องหมาย',

'description' => __( 'เปิดใช้งานการจัดส่งนี้', 'njengahplus' ),

'ค่าเริ่มต้น' => 'ใช่'

),


'title' => อาร์เรย์ (

'title' => __( 'ชื่อ', 'njengahplus' ),

'type' => 'ข้อความ',

'description' => __( 'ชื่อที่จะแสดงบนเว็บไซต์', 'njengahplus' ),

'default' => __( 'NjengahPlus Shipping', 'njengahplus' )

),


'น้ำหนัก' => อาร์เรย์ (

'title' => __( 'น้ำหนัก (กก.)', 'njengahplus' ),

'type' => 'ตัวเลข',

'description' => __( 'น้ำหนักสูงสุดที่อนุญาต', 'njengahplus' ),

'ค่าเริ่มต้น' => 100

),


);

}

ในโค้ดด้านบน ตอนนี้เราได้ตั้งค่าน้ำหนักสูงสุดภายใต้การตั้งค่า นี่คือผลลัพธ์: น้ำหนักสูงสุด

ค) การคำนวณค่าขนส่ง

ในการคำนวณต้นทุนการจัดส่ง เราจะอัปเดตวิธีการคำนวณ_shipping ทีละขั้นตอนเพื่อให้คุณเข้าใจแต่ละขั้นตอน

  1. อันดับแรก เราต้องคิด ต้นทุนตามน้ำหนัก ในการดำเนินการนี้ เพียงเพิ่มโค้ดนี้ลงในเมธอด calc_shipping:
 <?php

//...

ฟังก์ชันสาธารณะคำนวณ _shipping( $package ) {


น้ำหนัก $ = 0;

ต้นทุน $ = 0;

$country = $package["destination"]["country"]; $country = $package["destination"]["ประเทศ"];

foreach ( $package['contents'] เป็น $item_id => $values ​​)

{

$_product = $values['data'];

$weight = $weight + $_product->get_weight() * $values['ปริมาณ'];

}

$weight = wc_get_weight( น้ำหนัก $, 'กก.' );

ถ้า ( น้ำหนัก $ <= 10 ) {

ต้นทุน $ = 0;

} elseif( น้ำหนัก $ <= 30 ) {

ต้นทุน $ = 5;


} elseif( น้ำหนัก $ <= 50 ) {


ต้นทุน $ = 10;


} อื่น {

ต้นทุน $ = 20;

}

}
  1. จากโค้ดข้างต้น เรามีต้นทุนตามน้ำหนักของรถเข็น เราต้องคำนวณต้นทุนสำหรับประเทศที่จัดส่งที่เลือก เมื่อต้องการทำสิ่งนี้ให้เพิ่มรหัสนี้:
 <?php


ฟังก์ชันสาธารณะคำนวณ _shipping( $package ) {


$countryZones = อาร์เรย์ (

'HR' => 0,

'สหรัฐฯ' => 3,

'GB' => 2,

'CA' => 3,

'อีเอส' => 2,

'เด' => 1,

'ไอที' => 1

);


$โซนราคา = อาร์เรย์ (

0 => 10,

1 => 30,

2 => 50,

3 => 70

);


$zoneFromCountry = $countryZones[ $ประเทศ ];

$priceFromZone = $zone ราคา[ $zoneFromCountry ];


$cost += $priceFromZone;

}

  1. เราได้คำนวณต้นทุนตามน้ำหนักรวม และเราได้บวกต้นทุนตามประเทศที่จัดส่งด้วย ขั้นตอนสุดท้ายคือการเพิ่มรหัสนี้เพื่อลงทะเบียนอัตรา

รหัสทำงานอย่างไร

ในตัวอย่างแรกในส่วนนี้ เราได้กำหนดตัวแปรเริ่มต้นสองสามตัว: $weight , $cost และ $country เพื่อให้ได้ผลรวม เราได้รับน้ำหนักรวมโดยการวนซ้ำรถเข็นและเพิ่มน้ำหนักสำหรับแต่ละผลิตภัณฑ์ในรถเข็นไปยังตัวแปร $weight

หลังจากที่ได้น้ำหนักรวมแล้ว เราใช้ function wc_get_weight เพื่อแปลงน้ำหนักเป็นกิโลกรัม เนื่องจากเป็นหน่วยวัด ซึ่งวิธีการจัดส่งของเราได้กำหนดขีดจำกัดไว้ สุดท้ายคือตั้งขีดจำกัดไว้ที่ 100 กก.

ในตัวอย่างที่สอง อาร์เรย์ $countryZones จะเก็บโซนสำหรับแต่ละประเทศ และอาร์เรย์ที่สอง $zonePrices จะถือราคาสำหรับแต่ละโซน

นี่จะเป็นผลลัพธ์สำหรับโซนอิตาลี 1: ผลลัพธ์อิตาลี

นี่จะเป็น ผลลัพธ์สำหรับโซนสเปน 2: ผลลัพธ์ สเปน

นี่จะเป็นผลลัพธ์สำหรับโซนแคนาดา:

ผลลัพธ์สุดท้าย

หากคุณประสบปัญหาในการนำโค้ดนี้ไปใช้ นี่คือโค้ดแบบเต็ม:

 <?php


ฟังก์ชันสาธารณะคำนวณ _shipping( $package ) {

น้ำหนัก $ = 0;

ต้นทุน $ = 0;

$country = $package["destination"]["country"]; $country = $package["destination"]["ประเทศ"];

foreach ( $package['contents'] เป็น $item_id => $values ​​)

{

$_product = $values['data'];

$weight = $weight + $_product->get_weight() * $values['ปริมาณ'];

}
$weight = wc_get_weight( น้ำหนัก $, 'กก.' );

ถ้า ( น้ำหนัก $ <= 10 ) {

ต้นทุน $ = 0;

} elseif( น้ำหนัก $ <= 30 ) {

ต้นทุน $ = 5;

} elseif( น้ำหนัก $ <= 50 ) {

ต้นทุน $ = 10;

} อื่น {

ต้นทุน $ = 20;

}

$countryZones = อาร์เรย์ (

'HR' => 0,

'สหรัฐฯ' => 3,

'GB' => 2,

'CA' => 3,

'อีเอส' => 2,

'เด' => 1,

'ไอที' => 1

);




$โซนราคา = อาร์เรย์ (

0 => 10,

1 => 30,

2 => 50,

3 => 70

);


$zoneFromCountry = $countryZones[ $ประเทศ ];

$priceFromZone = $zone ราคา[ $zoneFromCountry ];

$cost += $priceFromZone;

อัตรา $ = อาร์เรย์ (

'id' => $this->id,

'label' => $this->title,

'ต้นทุน' => $cost

);

$นี้->add_rate( $อัตรา);

}

บทสรุป

ในโพสต์นี้ เราได้สร้างปลั๊กอินที่กำหนดเองเพื่อเพิ่มวิธีการจัดส่งแบบกำหนดเองใน WooCommerce นอกจากนี้ ฉันได้แชร์ WooCommerce Shipping API กับคุณ ซึ่งช่วยให้คุณสร้างวิธีการจัดส่งด้วยขั้นตอนง่ายๆ นอกจากนี้ ยังสามารถตั้งค่าข้อจำกัดและความพร้อมใช้งานภายในวิธีการจัดส่งเมื่อคำนวณความพร้อมจำหน่ายสินค้าหรือต้นทุนของวิธีการจัดส่ง อย่างไรก็ตาม สามารถตั้งค่านอกวิธีการจัดส่งได้โดยใช้การกระทำของ WooCommerce ฉันหวังว่าบทช่วยสอนนี้จะเป็นวิธีแก้ปัญหาสำหรับการเพิ่มวิธีการจัดส่งแบบกำหนดเองใน WooCommerce

บทความที่คล้ายกัน