Создание способа доставки. Пошаговое руководство

У меня на сайте уже есть подобный урок про создание метода оплаты (платёжного шлюза, другими словами). Теперь попробуем создать способ доставки для интернет-магазина на WooCommerce.

Нужна помощь с разработкой способа доставки WooCommerce? Пишите, я и моя команда будем рады вам помочь.

Если же вы пришли на этот гайд, чтобы сделать всё сами, тогда вперёд!

Шаг 1. Ваш плагин доставки для WooCommerce

Окей, ваша первая задача – создать плагин для WordPress. Звучит немного по-капитански, потому что весь этот урок мы делаем не что иное, как создаём плагин. Но по сути для начала нам нужно создать именно главный файл плагина, с его мета-информацией. Тут могу порекомендовать прочекать моё руководство по созданию плагина для WordPress.

Тем не менее, давайте ещё раз сделаем это вместе с вами. Для этого внутри папки wp-content/plugins создаем произвольный файл, который можем назвать как-нибудь, я назову его truemisha-shipping-method.php, его ещё можно поместить в папку с таким же названием, это нужно, если плагин внезапно будет состоять больше, чем из одного файла.

Внутрь плагина мы закидываем какую-либо мета-информацию, посмотрите, о чём я говорю:

<?php
/*
 * Plugin Name: Плагин доставки от Миши для вас
 * Plugin URI: https://misha.agency/woocommerce/sozdanie-plagina-dostavki.html
 * Description: Ваш супер-плагин доставки для интернет-магазина WooCommerce
 * Version: 1.0.0
 * Author: Миша Рудрастых
 * Author URI: https://misha.agency
 */

Как только вы сделаете это и сохраните ваш файл, то переходите в меню в админке на страницу плагинов и активируйте его:

Создание плагина доставки WooCommerce
Плагин должен появиться на странице всех плагинов вашего интернет-магазина, а я сразу же его и активировал.

Шаг 2. Функция, подключающая класс доставки

Чуть позже я начну показывать и описывать PHP-класс доставки, так вот, его вам нужно вставить внутрь функции, подключаемый на хук woocommerce_shipping_init. А вообще, если вы не знаете, куда вставлять код из моих уроков, то я рекомендую вам это руководство.

add_action( 'woocommerce_shipping_init', 'truemisha_add_shipping_method' );
 
function truemisha_add_shipping_method() {
 
	// сюда вставляйте класс
 
}

Шаг 3. WC_Your_Shipping_Method. Создание PHP-класса для способа доставки

При создании вашего класса доставки убедитесь, что он расширяет класс WooCommerce WC_Shipping_Method, благодаря чему у вас есть доступ к необходимым методам WooCommerce.

if ( ! class_exists( 'WC_Truemisha_Shipping_Method' ) ) {
 
	class WC_Truemisha_Shipping_Method extends WC_Shipping_Method {
		/**
		 * Конструктор класса
		 */
		public function __construct() {
			$this->id = 'truemisha_shipping_method';
			$this->title = 'Мишин способ доставки';
			$this->method_description = 'Какое-то описание способа доставки';
			$this->enabled = 'yes'; // эту опцию можно добавить внутрь настроек, в данном случае мы захардкодили её немного
			$this->init();
		}
 
		/**
	 	 * Инициализируем настройки
		 */
		function init() {
			// API настроек
			// $this->init_form_fields(); // Мы можем перезаписать этот метод, чтобы добавить свои настройки
			// $this->init_settings(); // This is part of the settings API. Loads settings you previously init.
 
			// Сохраняем настройки
			add_action( 'woocommerce_update_options_shipping_' . $this->id, array( $this, 'process_admin_options' ) );
		}
 
		/**
		 * Расчёт стоимости доставки
		 */
		public function calculate_shipping( $package ) {
			// тут будем добавлять различные правила для расчёта доставки
		}
	}
}

После того, как вы добавиил этот класс в код, нам также нужно дать WooCommerce знать, что он существует при помощи ещё одного фильтр-хука:

add_filter( 'woocommerce_shipping_methods', 'truemisha_add_shipping_class' );
 
function truemisha_add_shipping_class( $methods ) {
	$methods[ 'truemisha_shipping_method' ] = 'WC_Truemisha_Shipping_Method'; 
	return $methods;
}

Шаг 4. Настройки метода доставки

Создание опций для методов доставки очень похоже на создание опций для платёжных шлюзов, и так как про платёжные шлюзы у меня уже есть отдельное руководство, то я сейчас не буду описывать одно и то же, но зато дам вам ссылку.

Шаг 5. Метод расчёта стоимости доставки

Тут мы с вами будем говорить о методе calculate_shipping(), который я также упоминал чуть выше в конструкторе класса, мы производём различные расчеты и добавим их при помощи метода add_rate(), например вот так:

$this->add_rate(
	array(
		'label'    => 'Какой-то описание', // можем использовать $this->get_title()
		'cost'     => '10.99', // стоимость в текущей валюте магазина
		'calc_tax' => 'per_item' // может быть per_item и per_order
	)
);

Если вы всё сделали правильно, то после вставки всего этого кода, в корзине у вас появится возможность выбрать наш способ доставки:

Создание способа доставки WooCommerce

Нужна помощь с разработкой способа доставки WooCommerce? Пишите, я и моя команда будем рады вам помочь.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 5

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал