GoPymes's Blog

Woocommerce – Construir plugin de costos de envío

envios

Este post será corto y conciso, para crear un plugin de costos de envío en Woocommerce necesitamos sólo 2 arhivos: index.php y [nombre_clase].php para este caso lo llamaremos gowoo_shipping_test.php

 

Index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
/*
Plugin Name: WooCommerce Shipping Test
Plugin URI: http://www.gopymes.pe/
Description: It is a new shipping method for Woocommerce
Version: 1.0.0
Author: GoPymes SAC
Author URI: http://www.gopymes.pe/
Requires at least: 4.0.1
*/


/* WooCommerce fallback notice. */
function gowoo_notice() {
echo '<div class="error"><p>' . sprintf( __( 'WooCommerce Shipping Test depends on the last version of %s to work!', 'gowc' ), '<a href="http://wordpress.org/extend/plugins/woocommerce/">WooCommerce</a>' ) . '</p></div>';
}

/* Load functions */
function gowoo_load() {
if ( ! class_exists( 'WC_Shipping_Method' ) ) {
add_action( 'admin_notices', 'gowoo_notice' );
return;
}

/* Add the class */
function gowoo_addshipping( $methods ) {
$methods[] = 'WC_Shipping_Test';
return $methods;
}
add_filter( 'woocommerce_shipping_methods', 'gowoo_addshipping' );

/* Include the WooCommerce Shipping District classes. */
require_once plugin_dir_path( __FILE__ ) . 'gowoo-shipping-test.inc.php';

}
add_action( 'plugins_loaded', 'gowoo_load', 0 );
?>

El método “woocommerce_shipping_methods” es el encargado de agregar métodos de envío a Woocommerce.

 

gowoo-shipping-test.inc.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
class WC_Shipping_Test extends WC_Shipping_Method {

function __construct() {
$this->id = 'district-test';
$this->method_title = __('Test Shipping Method','gowoo');
$this->method_description = __('It is a new shipping method for Woocommerce','gowoo');
$this->enabled = $this->get_option( 'enabled' );
$this->title = $this->get_option( 'title' );

$this->init();
}

function init() {
// Load the settings.
$this->init_form_fields();
$this->init_settings();

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

function init_form_fields() {
$this->form_fields = array(
'enabled' => array(
'title' => __( 'Enable/Disable', 'gowoo' ),
'type' => 'checkbox',
'label' => __( 'Enable Test Shipping', 'gowoo' ),
'default' => 'no'
),
'title' => array(
'title' => __( 'Method Title', 'gowoo' ),
'type' => 'text',
'description' => __( 'This controls the title which the user sees during checkout.', 'gowoo' ),
'default' => __( 'Test Shipping', 'gowoo' ),
'desc_tip' => true,
)
);
}

function calculate_shipping( $package ) {

/*
Logic to calculate the shipping cost
$package has all the order items
*/

$this->add_rate( 5 );
}

}
?>

 

La función “calculate_shipping” es el encargado de colocar el costo de envío en el “order view” en este ejemplo le hemos puesto “5” y de acuerdo a la moneda que tiene el Woocommerce se mostrará con su símbolo.

Puedes aprovechar el parámetro $package, el cual tiene toda la información necesaria para que calcules tu costo de envío, desde información del comprador hasta el detalle de cada producto.

 

De acuerdo al valor que le asignes, sea porcentaje o monto fijo, el costo de envío saldrá como esta imágen.

costo_envio2

Leave a Reply

Your email address will not be published. Required fields are marked *