WooC Commerce có API phương thức vận chuyển mà plugin có thể sử dụng để thêm mức giá của riêng họ. Bài viết này sẽ hướng dẫn bạn các bước để tạo phương thức vận chuyển mới và tương tác với API.

Lưu ý: Đây là tài liệu cấp Nhà phát triển . Nếu bạn không quen với mã/mẫu và giải quyết các xung đột tiềm ẩn, hãy chọn WooExpert hoặc Nhà phát triển  để được hỗ trợ. Chúng tôi không thể cung cấp hỗ trợ cho các tùy chỉnh theo Chính sách hỗ trợ của chúng tôi . 

 

Tạo một phần bổ trợ

Trước hết, hãy tạo một plugin WordPress/WooC Commerce thông thường – xem  Tạo plugin Bạn sẽ xác định lớp phương thức vận chuyển của mình trong tệp plugin này và duy trì nó bên ngoài WooC Commerce.

Tạo một hàm để chứa lớp của bạn

Để đảm bảo các lớp bạn cần mở rộng tồn tại, bạn nên bọc lớp của mình trong một hàm được gọi sau khi tất cả các plugin được tải:

chức năng your_shipping_method_init() {
    // Lớp của bạn sẽ vào đây
}

add_action( 'woocommerce_shipping_init', 'your_shipping_method_init' );

Tạo lớp học của bạn

Tạo lớp của bạn và đặt nó bên trong hàm bạn vừa tạo. Hãy đảm bảo rằng nó mở rộng lớp phương thức vận chuyển để bạn có quyền truy cập vào API. Bạn sẽ thấy bên dưới, chúng tôi cũng bắt đầu các tùy chọn phương thức vận chuyển.

if ( ! class_exists( 'WC_Your_Shipping_Method' ) ) {
    lớp WC_Your_Shipping_Method mở rộng WC_Shipping_Method {
        /**
         * Trình xây dựng cho lớp vận chuyển của bạn
         *
         * @access công khai
         * @return void
         */
        chức năng công cộng __construct() {
            $this->id = 'your_shipping_method';
            $this->title = __( 'Phương thức vận chuyển của bạn' );
            $this->method_description = __( 'Mô tả phương thức vận chuyển của bạn' ); //
            $this->enabled = "có"; // Điều này có thể được thêm dưới dạng cài đặt nhưng trong ví dụ này, nó buộc phải được bật
            $this->init();
        }

        /**
         * Bắt đầu cài đặt của bạn
         *
         * @access công khai
         * @return void
         */
        hàm init() {
            // Tải API cài đặt
            $this->init_form_fields(); // Đây là một phần của API cài đặt. Ghi đè phương thức để thêm cài đặt của riêng bạn
            $this->init_settings(); // Đây là một phần của API cài đặt. Tải các cài đặt mà bạn đã khởi tạo trước đó.

            // Lưu cài đặt trong quản trị viên nếu bạn đã xác định
            add_action( 'woocommerce_update_options_shipping_' . $this->id, array( $this, 'process_admin_options' ) );
        }

        /**
         * hàm tính_vận chuyển.
         *
         * @access công khai
         * @param hỗn hợp gói $
         * @return void
         */
        hàm công khai Calculate_shipping( $package ) {
            // Đây là nơi bạn sẽ thêm giá của mình
        }
    }
}

Ngoài việc khai báo lớp của mình, bạn cũng cần cho WooC Commerce biết nó tồn tại với một chức năng khác:

hàm add_your_shipping_method($methods) {
    $methods['your_shipping_method'] = 'WC_Your_Shipping_Method';
    trả về các phương thức $;
}

add_filter( 'woocommerce_shipping_methods', 'add_your_shipping_method' );

Xác định cài đặt/tùy chọn

Sau đó, bạn có thể xác định các tùy chọn của mình bằng API cài đặt. Trong đoạn trích trên, bạn sẽ nhận thấy chúng tôi init_form_fields và init_settings. Chúng tải lên API cài đặt. Để xem cách thêm cài đặt, hãy xem API cài đặt WooC Commerce .

Phương thức tính toán_shipping()

tính toán_shipping() là phương pháp bạn sử dụng để thêm giá của mình – WooC Commerce sẽ gọi phương pháp này khi thực hiện tính toán vận chuyển. Thực hiện các phép tính cụ thể cho plugin của bạn tại đây rồi thêm giá thông qua API. Làm thế nào để bạn làm điều đó? Giống như vậy:

$rate = mảng(
    'nhãn' => "Nhãn cho tỷ lệ",
    'giá' => '10,99',
    'calc_tax' => 'per_item'
);

// Đăng ký tỷ lệ
$this->add_rate( $rate );

Add_rate có một loạt các tùy chọn. Các giá trị mặc định/có thể có cho mảng như sau:

$mặc định = mảng(
    'label' => '', // Nhãn cho tỷ lệ
    'cost' => '0', // Số tiền vận chuyển hoặc một mảng chi phí (đối với vận chuyển mỗi mặt hàng)
    'taxes' => '', // Chuyển một mảng thuế hoặc không chuyển gì để tính thuế cho bạn hoặc chuyển 'false' để không tính thuế cho phương thức này
    'calc_tax' => 'per_order' // Tính thuế per_order hoặc per_item. Mỗi mặt hàng cần một loạt chi phí được chuyển qua 'chi phí'
);

Phương thức vận chuyển của bạn có thể chuyển bao nhiêu mức phí tùy thích – chỉ cần đảm bảo rằng id cho mỗi mức phí là khác nhau. Người dùng sẽ được chọn mức giá khi thanh toán.

Ghép tất cả lại với nhau

Tất cả mã phương thức vận chuyển khung được ghép lại với nhau trông như thế này:

<?php
/*
Plugin Name: Your Shipping plugin
Plugin URI: https://woocommerce.com/
Description: Your shipping method plugin
Version: 1.0.0
Author: WooThemes
Author URI: https://woocommerce.com/
*/
/**
* Check if WooCommerce is active
*/
if ( in_array( ‘woocommerce/woocommerce.php’, apply_filters( ‘active_plugins’, get_option( ‘active_plugins’ ) ) ) ) {
function your_shipping_method_init() {
if ( ! class_exists( ‘WC_Your_Shipping_Method’ ) ) {
class WC_Your_Shipping_Method extends WC_Shipping_Method {
/**
* Constructor for your shipping class
*
* @access public
* @return void
*/
public function __construct() {
$this->id = ‘your_shipping_method’; // Id for your shipping method. Should be uunique.
$this->method_title = __( ‘Your Shipping Method’ ); // Title shown in admin
$this->method_description = __( ‘Description of your shipping method’ ); // Description shown in admin
$this->enabled = “yes”; // This can be added as an setting but for this example its forced enabled
$this->title = “My Shipping Method”; // This can be added as an setting but for this example its forced.
$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’ ) );
}
/**
* calculate_shipping function.
*
* @access public
* @param array $package
* @return void
*/
public function calculate_shipping( $package = array() ) {
$rate = array(
‘label’ => $this->title,
‘cost’ => ‘10.99’,
‘calc_tax’ => ‘per_item’
);
// Register the rate
$this->add_rate( $rate );
}
}
}
}
add_action( ‘woocommerce_shipping_init’, ‘your_shipping_method_init’ );
function add_your_shipping_method( $methods ) {
$methods[‘your_shipping_method’] = ‘WC_Your_Shipping_Method’;
return $methods;
}
add_filter( ‘woocommerce_shipping_methods’, ‘add_your_shipping_method’ );
}

Để biết thêm thông tin, vui lòng xem Wiki Phương thức Vận chuyển API .

Leave a Reply

Liên hệ ngay với chúng tôi!