Cara Menambahkan Metode Pengiriman Kustom di WooCommerce

Diterbitkan: 2020-09-01

WooCommerce Tambahkan Metode Pengiriman Khusus Jika Anda sudah familiar dengan WooCommerce, Anda tahu bahwa itu adalah solusi e-commerce gratis yang hebat, dengan serangkaian fitur yang sangat berguna. Yang menonjol adalah WooCommerce dikembangkan dengan mempertimbangkan perluasan, mirip dengan modularitas WordPress.

Namun, jika Anda membutuhkan sesuatu yang ekstra dari WooCommerce, Anda sering menemukan WooCommerce tidak memberikan semua yang Anda butuhkan, misalnya, jika Anda ingin menambahkan metode pengiriman kustom. Namun demikian, jangan khawatir karena dalam tutorial singkat ini, Anda akan belajar cara membuat metode pengiriman sederhana untuk WooCommerce, yang akan menghitung biaya pengiriman.

Selain itu, Anda akan mempelajari cara menambahkan beberapa batasan ke plugin kami sehingga metode pengiriman tersedia untuk beberapa negara.

Aturan Pengiriman Kustom untuk Metode Pengiriman

Di bagian ini, kita akan membuat aturan pengiriman khusus untuk metode pengiriman yang akan kita gunakan untuk membuat kode. Kami akan menentukan bagaimana metode pengiriman akan menghitung biaya dan ke mana pengirimannya. Ini berarti bahwa biaya akan ditentukan oleh berat dan zona tujuan pengiriman.

Untuk contoh ini, kami akan mengirim ke AS, Kanada, Jerman, Inggris Raya, Italia, Spanyol, dan Kenya. Kenya akan menjadi Zona 0 kami seharga $10, Zona 1 Italia seharga $30, Zona Spanyol 2 seharga $50, Zona 2 Inggris Raya seharga $50, AS, dan Zona 3 Kanada seharga $70.

Untuk beratnya, kami akan memberi harga sebagai berikut: 0 – 10kg gratis, 11 – 30kgs seharga $5, 31-50kgs seharga $10, dan 51-100kgs seharga $20.

Anda mungkin siap untuk memulai pengkodean, tetapi belum! Pertama, Anda perlu mempelajari tentang WooCommerce Shipping API . Saat Anda ingin membuat metode pengiriman khusus, Anda perlu memperluas kelas dari kelas abstrak WooCommerce WC_Shipping_Method. Ini memiliki beberapa atribut yang ditentukan, yaitu:

  • $id : ID (slug, kata kunci) pengiriman kami yang diperlukan.
  • $number : Ini adalah ID Integer.
  • $method_title : Nama pengiriman kami tertera di admin.
  • $method_description : Deskripsi singkat tentang pengiriman kami ditampilkan di admin (Opsional).
  • $enabled : String Boolean, “yes” atau “no”, yang memberikan informasi apakah pengiriman kita diaktifkan dan apakah bisa digunakan atau tidak.
  • $title : Digunakan untuk menampilkan nama pengiriman kami di situs kami.
  • $availability : Ini menentukan apakah pengiriman tersedia atau tidak.
  • $countries : Array negara tempat metode ini diaktifkan. Nilai default adalah array kosong.
  • $tax_status : Nilai default adalah kena pajak. Jika suatu barang kena pajak, maka pajak akan dikenakan.
  • $fee : Nilai defaultnya adalah 0
  • $minimum_fee : Biaya minimum untuk metode dan nilai default adalah null.
  • $has_settings : Ini menentukan apakah metode ini memiliki pengaturan apa pun. Nilai default adalah benar.
  • $supports : Array yang berisi fitur yang didukung metode ini. Nilai default adalah array kosong.
  • $rates : Serangkaian tarif dan ini harus diisi untuk mendaftarkan biaya pengiriman. Nilai default adalah array kosong.

Metode yang ditentukan dalam WC_Shipping_Method adalah:

  • is_taxable() : Ini mengembalikan apakah kita perlu menghitung pajak di atas tarif pengiriman atau tidak.
  • add_rate( $args = array() ) : Ini mendorong tarif pengiriman yang ditentukan dalam parameter $args ke dalam atribut $rates.
  • has_settings() : Ini mengembalikan nilai atribut $has_settings.
  • is_available() : Ini mengembalikan jika pengiriman tersedia dan jika ada negara yang diatur dalam atribut $countries dan atribut $availability diatur ke nilai termasuk, spesifik atau tidak termasuk, ini akan mengembalikan true atau false jika negara tersedia untuk pengiriman .
  • get_title() : Ini mengembalikan judul pengiriman ini.
  • get_fee( $fee, $total ) : Ini mengembalikan nilai biaya untuk pengiriman ini berdasarkan $fee dan $total yang diurai.
  • supports( $feature ) : Ini mengembalikan jika metode pengiriman ini mendukung fitur atau tidak.

Karena kelas WC_Shipping_Method memperluas kelas WC_Settings_API, ada lebih banyak atribut dan metode, yang tidak akan saya jelaskan di sini untuk tujuan kesederhanaan.

Juga, metode lain perlu ditentukan sehingga pengiriman bisa mendapatkan atau mengatur pengaturan dan menghitung biaya pengiriman yang sebenarnya. Metode ini tercantum di sini:

  • init() : Ini membuat bidang formulir dan pengaturan. Namun, itu bisa dinamai berbeda, selama kita menggunakan metode di dalamnya dan menyebutnya dalam metode __constructor.
  • calculate_shipping( $package ) : Metode ini digunakan untuk menghitung biaya pengiriman ini dan paket adalah larik dengan produk yang akan dikirim.

Saya ingin menaruh beberapa fokus pada metode menghitung_pengiriman. Untuk contoh kita, kita akan menggunakan metode ini dan menambahkannya ke metode add_rate. Metode ini akan menerima array dengan beberapa opsi seperti:

  • id : Ini adalah ID tarifnya.
  • label : Ini adalah label untuk tarifnya.
  • cost : Jumlah pengiriman.
  • taxes : Ia menerima serangkaian pajak atau tidak sama sekali sehingga pajak dihitung oleh WooCommerce. Jika Anda tidak ingin menerima pajak, itu dapat menerima palsu.
  • calc_tax : Ini menerima per_order atau per_item. Jika Anda menggunakan per_item, serangkaian biaya harus disediakan.

Kami akan menggunakan filter WordPress untuk mendapatkan larik yang menambahkan metode pengiriman kami dalam larik metode terdaftar dengan meneruskan nama kelas kami, menggunakan filter WordPress yang ditentukan di dalam plugin WooCommerce. Filternya disebut woocommerce_shipping_methods.

Dengan itu di atas meja, sekarang mari kita masuk ke bagian pengkodean dari tutorial singkat ini sehingga Anda dapat memahami keseluruhan konsep dalam cuplikan PHP yang akan saya bagikan.

a) Langkah-langkah Membuat Kelas Pengiriman Baru

Di bagian ini, kami akan membuat metode pengiriman kami sebagai plugin baru yang memperluas WooCommerce.

  1. Pertama, Anda perlu membuka wp-content > plugins dan membuat folder baru. Untuk ini, saya akan menggunakan nama njengah -pengiriman
  2. Kemudian, Anda perlu membuat file dengan nama yang sama njengah –shipping.php
  3. Dalam file ini tambahkan kode berikut:
 <?php

/**
* Nama Plugin: Njengah Shipping
* URI Plugin: https://njengah.com/plugins/
* Keterangan: 
* Versi: 1.0.0
* Penulis: Joe Njenga
* Penulis URI: https://njengah.com
S
*/

jika ( ! didefinisikan( 'WPIN' ) ) {

mati;

}
/*
* Periksa apakah WooCommerce aktif
*/
if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {

fungsi njengahplus_shipping_method() {

if ( ! class_exists( 'NjengahPlus_Shipping_Method' ) ) {

class NjengahPlus_Shipping_Method meluas WC_Shipping_Method {

/**

* Konstruktor untuk kelas pengiriman Anda

*

* @akses publik

* @kembali batal

*/

fungsi publik __construct() {

$this->id = 'njengahplus';

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

$this->method_description = __( 'Cara Pengiriman Khusus NjengahPlus', 'njengahplus' );

$ini->init();

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

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

}

/**
* Init pengaturan Anda
*
* @akses publik

* @kembali batal

*/

fungsi init() {

// Muat API pengaturan

$this->init_form_fields();

$this->init_settings();

// Simpan pengaturan di admin jika Anda memilikinya

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

}


/**

* Tentukan bidang pengaturan untuk pengiriman ini

* @kembali batal

*/

fungsi init_form_fields() {

// Kami akan menambahkan pengaturan kami di sini

}

/**
* Fungsi ini digunakan untuk menghitung biaya pengiriman. Dalam fungsi ini, kita dapat memeriksa bobot, dimensi, dan parameter lainnya.
*
* @akses publik
* @param campuran $paket
 @kembali batal
*/

fungsi publik menghitung_pengiriman( $paket ) {


// Kami akan menambahkan biaya, tarif, dan logika di sini

}

}

}

}


add_action( 'woocommerce_shipping_init', 'njengahplus_shipping_method' );

function add_njengahplus_shipping_method( $methods ) {

$metode[] = 'NjengahPlus_Shipping_Method';
kembali $metode;
}

add_filter( 'woocommerce_shipping_methods', 'add_njengahplus_shipping_method' );

}

Bagaimana itu bekerja

  • Kami pertama memeriksa apakah WPINC konstan didefinisikan. Jika tidak ditentukan, berarti ada seseorang yang mencoba mengakses file ini secara langsung atau dari suatu lokasi, bukan WordPress.
  • Kemudian kita perlu memeriksa apakah WooCommerce aktif. Di sini kita memeriksa apakah woocommerce.php ada dalam array plugin aktif yang disimpan dalam database di bawah opsi active_plugins.
  • woocommerce_shipping_init adalah tindakan utama untuk Pengiriman WooCommerce yang mencakup semua kelas pengiriman sebelum mereka dipakai. Menggunakan tindakan ini akan memastikan bahwa metode pengiriman kami akan disertakan setelah WooCommerce diinisialisasi dan di tempat yang tepat bagi WooCommerce untuk menggunakannya.
  • Metode __construct menetapkan beberapa atribut umum dan beberapa di antaranya dapat dengan mudah ditimpa setelah pengaturan dimuat dari database dalam metode init.
  • Metode lainnya dibiarkan kosong karena kita akan mendefinisikannya nanti di tutorial.

Maka Anda perlu menuju untuk mengaktifkan plugin menggunakan langkah-langkah yang ditunjukkan di bawah ini:

  1. Masuk ke situs WordPress Anda dan akses Dasbor sebagai pengguna admin.
  2. Dari menu Dashboard, klik Plugin dan aktifkan Njengah pengiriman seperti gambar di bawah ini: mengaktifkan plugin
  3. Setelah mengaktifkan plugin, buka WooCommerce > Settings . Klik Tab WooCommerce lalu klik pengiriman NjengahPlus . Anda harus dapat melihat ini: Hasil untuk kode pertama

b) Mengatur Ketersediaan Negara

Metode pengiriman yang kami buat hanya tersedia di daftar negara yang ditentukan sebelumnya.

  1. Tambahkan ini dalam metode __construct :
 <?php

//...

$this->method_description = __( 'Cara Pengiriman Khusus NjengahPlus', 'njengahplus' );

// Ketersediaan & Negara

$this->availability = 'termasuk';

$this->negara = array(

'AS', // Amerika Serikat

'CA', // Kanada

'DE', // Jerman

'GB', // Inggris Raya

'IT', // Italia

'ES', // Spanyol

'HR' // Kenya

);

$ini->init();

//...

Cara Kerja Kode

Atribut ketersediaan disetel ke 'termasuk' sehingga pengiriman ini hanya tersedia untuk negara di atribut negara.

WooCommerce akan memeriksa apakah negara pengiriman termasuk dalam negara atribut.

Membuat Pengaturan

Anda hanya perlu menyalin kode ini dan mengisi metode init_form_fields kami:

 <?php



fungsi init_form_fields() {

$this->form_fields = array(

'diaktifkan' => array(

'title' => __( 'Aktifkan', 'njengahplus' ),

'ketik' => 'kotak centang',

'description' => __( 'Aktifkan pengiriman ini.', 'njengahplus' ),

'default' => 'ya'

),


'judul' => larik(

'judul' => __( 'Judul', 'njengahplus' ),

'ketik' => 'teks',

'deskripsi' => __( 'Judul yang akan ditampilkan di situs', 'njengahplus' ),

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

),


);


}

Untuk memeriksa hasilnya, ikuti langkah-langkah berikut:

  1. Masuk ke situs WordPress Anda dan akses Dasbor sebagai pengguna adminDari menu Dasbor, klik WooCommerce > Pengaturan
  2. Klik tab Shipping dan klik NjengahPlus Shipping seperti gambar dibawah ini : Njengah plus ongkos kirim
  3. Aktifkan kotak centang dan simpan perubahan.

Kami dapat mengatur metode pengiriman untuk mengirim hingga 100 kg. Kemudian kami akan mengizinkannya untuk diedit di pengaturan jika aturan itu segera berubah. Setelah mengatur ini, kode pengaturan akan terlihat seperti ini:

 <?php




fungsi init_form_fields() {

$this->form_fields = array(

'diaktifkan' => array(

'title' => __( 'Aktifkan', 'njengahplus' ),

'ketik' => 'kotak centang',

'description' => __( 'Aktifkan pengiriman ini.', 'njengahplus' ),

'default' => 'ya'

),


'judul' => larik(

'judul' => __( 'Judul', 'njengahplus' ),

'ketik' => 'teks',

'deskripsi' => __( 'Judul yang akan ditampilkan di situs', 'njengahplus' ),

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

),


'berat' => array(

'judul' => __( 'Berat badan (kg)', 'njengahplus' ),

'ketik' => 'angka',

'deskripsi' => __( 'Berat maksimum yang diperbolehkan', 'njengahplus' ),

'default' => 100

),


);

}

Dalam kode di atas, kami sekarang telah mengatur berat maksimum di bawah pengaturan. Inilah Hasilnya: Berat maksimum

c) Menghitung Biaya Pengiriman

Untuk menghitung biaya pengiriman, kami akan memperbarui metode menghitung_pengiriman satu langkah pada satu waktu sehingga Anda dapat memahami setiap langkah.

  1. Pertama, kita perlu mendapatkan biaya berdasarkan berat . Untuk melakukan ini, cukup tambahkan kode ini ke metode calc_shipping:
 <?php

//...

fungsi publik menghitung_pengiriman( $paket ) {


$berat = 0;

$biaya = 0;

$negara = $paket["tujuan"]["negara"];

foreach ( $package['contents'] sebagai $item_id => $values ​​)

{

$_produk = $nilai['data'];

$berat = $berat + $_produk->get_berat() * $nilai['jumlah'];

}

$berat = wc_get_weight( $berat, 'kg' );

if( $berat <= 10 ) {

$biaya = 0;

} elseif( $berat <= 30 ) {

$biaya = 5;


} elseif( $berat <= 50 ) {


$biaya = 10;


} kalau tidak {

$biaya = 20;

}

}
  1. Dari kode di atas, kami memiliki biaya berdasarkan berat troli, kami harus menghitung biaya untuk negara pengiriman yang dipilih. Untuk melakukan ini, tambahkan kode ini:
 <?php


fungsi publik menghitung_pengiriman( $paket ) {


$countryZones = array(

'HR' => 0,

'AS' => 3,

'GB' => 2,

'CA' => 3,

'ES' => 2,

'DE' => 1,

'ITU' => 1

);


$zoneHarga = array(

0 => 10,

1 => 30,

2 => 50,

3 => 70

);


$zoneFromCountry = $countryZones[ $negara ];

$priceFromZone = $zoneHarga[ $zoneFromCountry ];


$biaya += $hargaDariZona;

}

  1. Kami telah menghitung biaya berdasarkan berat total, dan kami juga telah menambahkan biaya berdasarkan negara pengiriman. Langkah terakhir adalah menambahkan kode ini untuk mendaftarkan tarif.

Cara Kerja Kode

Pada cuplikan pertama di bagian ini, kita telah mendefinisikan beberapa variabel awal: $weight , $cost , dan $country . Untuk mendapatkan total, kita mendapatkan berat total dengan mengulangi keranjang dan menambahkan berat untuk setiap produk dalam keranjang ke variabel $weight .

Setelah memiliki berat total, kami menggunakan function wc_get_weight untuk mengubah berat menjadi kilogram karena ini adalah satuan, yang metode pengiriman kami telah menetapkan batasnya. Kemudian hal terakhir adalah menetapkan batas hingga 100kg.

Dalam cuplikan kedua, larik $countryZones menyimpan zona untuk setiap negara dan larik kedua $zonePrices menyimpan harga untuk setiap zona.

Ini akan menjadi hasil untuk Italia Zona 1: hasil italia

Ini akan menjadi hasil untuk Spanyol Zona 2: hasil Spanyol

Ini akan menjadi hasil untuk Zona Kanada:

hasil akhir

Jika Anda kesulitan menerapkan kode ini, berikut kode lengkapnya:

 <?php


fungsi publik menghitung_pengiriman( $paket ) {

$berat = 0;

$biaya = 0;

$negara = $paket["tujuan"]["negara"];

foreach ( $package['contents'] sebagai $item_id => $values ​​)

{

$_produk = $nilai['data'];

$berat = $berat + $_produk->get_berat() * $nilai['jumlah'];

}
$berat = wc_get_weight( $berat, 'kg' );

if( $berat <= 10 ) {

$biaya = 0;

} elseif( $berat <= 30 ) {

$biaya = 5;

} elseif( $berat <= 50 ) {

$biaya = 10;

} kalau tidak {

$biaya = 20;

}

$countryZones = array(

'HR' => 0,

'AS' => 3,

'GB' => 2,

'CA' => 3,

'ES' => 2,

'DE' => 1,

'ITU' => 1

);




$zoneHarga = array(

0 => 10,

1 => 30,

2 => 50,

3 => 70

);


$zoneFromCountry = $countryZones[ $negara ];

$priceFromZone = $zoneHarga[ $zoneFromCountry ];

$biaya += $hargaDariZona;

$tingkat = array(

'id' => $this->id,

'label' => $this->judul,

'biaya' => $biaya

);

$this->add_rate( $rate );

}

Kesimpulan

Dalam posting ini, kami membuat plugin khusus untuk menambahkan metode pengiriman khusus di WooCommerce. Selain itu, saya telah membagikan kepada Anda API Pengiriman WooCommerce yang memungkinkan Anda membuat metode pengiriman dengan langkah-langkah sederhana. Selain itu, batasan dan ketersediaan dapat diatur di dalam metode pengiriman saat menghitung ketersediaan atau biaya metode pengiriman. Namun, mereka dapat diatur di luar metode pengiriman menggunakan tindakan WooCommerce. Saya harap tutorial ini memberikan solusi untuk menambahkan metode pengiriman khusus di WooCommerce.

Artikel Serupa