Aggiungere metodi di spedizione personalizzati a Woocommerce

Problemi ad aggiungere metodi di spedizione personalizzati su Woocommerce? Ecco la soluzione

Nell’articolo di oggi scopriamo come aggiungere metodi di spedizione personalizzati a Woocommerce.

Woocommerce non offre di default la possibilità di aggiungere in modo autonomo i moduli di spedizione, ma si limita di fatto a:

  • Modulo italia
  • Flat rate (Eu o paesi specifici)
  • Spedizione mondo
  • Ritiro in sede
  • Spedizione gratis

Ma è possibile aggiungere metodi di spedizione personalizzati? Ecco il codice da inserire:

File: functions.php del vostro tema.

Nel file di esempio aggiungiamo – ad esempio – un flat rate di spedizione “express” piu veloce per l’Italia.

/*
Plugin Name: Spedizione Italia - Express
Plugin URI: http://www.targetweb.it/aggiungere-metodi-di-spedizione-personalizzati-a-woocommerce/
Description: Spedizione Italia - Express plugin
Version: 1.0.0
Author: Targetweb
Author URI: http://www.targetweb.it/
*/

/**
 * Check se Woocommerce è attivo 
 */
if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {

	function shipping_italia_express_init() {
		if ( ! class_exists( 'WC_Shipping_Italia_Express_Method' ) ) {
			class WC_Shipping_Italia_Express_Method extends WC_Shipping_Method {
				/**
				 * Costruisco la classe di shipping
				 *
				 * @access public
				 * @return void
				 */
				public function __construct() {
					$this->id                 = 'shipping_italia_express'; // Id univoco per il metodo di spedizione
					$this->method_title       = __( 'Spedizione Italia - Express ' );  // titolo in area admin
					$this->method_description = __( 'Spedizione Italia - Express 1-2 giorni lavorativi' ); // descrizione area admin

					$this->enabled            = "yes"; // Abilitato di default?
					$this->title              = "Spedizione Italia - Express"; // Titolo della spedizione, è possibile renderlo dinamico
					$this->init();
				}

				/**
				 * Inizializzo
				 *
				 * @access public
				 * @return void
				 */
				function init() {
					
					$this->init_form_fields(); 
					$this->init_settings(); 

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

				/**
				 * Funzione di calcolo
				 *
				 * @access public
				 * @param mixed $package
				 * @return void
				 */
				public function calculate_shipping( $package ) {
					$rate = array(
						'id' => $this->id,
						'label' => $this->title,
						'cost' => '14.00', // prezzo da impostare
						'calc_tax' => 'per_order' // possibilità di fare un prezzo per_order o per_item
					);

					$this->add_rate( $rate );
				}
			}
		}
	}

	add_action( 'woocommerce_shipping_init', 'shipping_italia_express_init' );

	function add_your_shipping_method( $methods ) {
		$methods[] = 'WC_Shipping_Italia_Express_Method';
		return $methods;
	}

	add_filter( 'woocommerce_shipping_methods', 'add_your_shipping_method' );
}

Vi invito a visionare i commenti al codice per ulteriori delucidazioni.

Grazie a queste poche righe di codice riuscirete facilmente ad aggiungere dei custom shipping method utilissimi per estendere le funzionalità del vostro shop online!

Questo articolo ti è stato utile? Condividilo sui tuoi social network preferiti!

Lascia la tua opinione

×