Como modificar la lista de provincias para envios en WooCommerce

A través del filtro woocommerce_states que devuelve un array de estados o provincias podemos modificar la lista a nuestro antojo, simplemente añadiendo unas líneas de código en nuestro plugin o el archivo functions.php de nuestro theme.

Para los ejemplos que voy a poner aquí vamos a suponer que en los ajustes de WooCommerce hemos seleccionado España como país para los envíos.

add_filter('woocommerce_states', 'my_custom_states');
 
function my_custom_states( $states ) {
 
   // aquí el código para modificar el array $states
   return $states;
}

Por ejemplo si no realizaramos envios a Canarias, podemos eliminar la opción Santa Cruz de Tenerife del array de provincias de esta manera:

add_filter('woocommerce_states', 'my_custom_states');
 
function my_custom_states( $states ) {
 
   unset($states['ES']['TF']);
   return $states;
}

Para excluir una lista de provincias:

add_filter('woocommerce_states', 'my_custom_states');
 
function my_custom_states( $states ) {
 
	$exclude = array('TF','BU','SG','ML','NA','OR');
 
	foreach( $exclude as $item ) {
		unset($states['ES'][$item]);
	}
 
	return $states;
}

O si sólo realizamos envíos a 3 provincias:

add_filter('woocommerce_states', 'my_custom_states');
 
function my_custom_states( $states ) {
 
   $states = array(
     'B'  => 'Barcelona',
     'MU' => 'Murcia',
     'SG' => 'Segovia'
   );
 
   return $states;
}

Puedes encontrar toda la lista de provincias y sus códigos dentro del plugin de WooCommerce, esta es la ruta a dicho archivo: woocommerce/i18n/states/ES.php (junto con el resto de archivos para los demás países)

Eliminar las notificaciones por correo de WooCommerce

Snippet útil por Mike Jolley encontrado en Github con una lista de hooks para las notificaciones de WooCommerce.

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
add_action( 'woocommerce_email', 'unhook_those_pesky_emails' );
 
function unhook_those_pesky_emails( $email_class ) {
 
		/**
		 * Hooks for sending emails during store events
		 **/
		remove_action( 'woocommerce_low_stock_notification', array( $email_class, 'low_stock' ) );
		remove_action( 'woocommerce_no_stock_notification', array( $email_class, 'no_stock' ) );
		remove_action( 'woocommerce_product_on_backorder_notification', array( $email_class, 'backorder' ) );
 
		// New order emails
		remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
		remove_action( 'woocommerce_order_status_pending_to_completed_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
		remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
		remove_action( 'woocommerce_order_status_failed_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
		remove_action( 'woocommerce_order_status_failed_to_completed_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
		remove_action( 'woocommerce_order_status_failed_to_on-hold_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
 
		// Processing order emails
		remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
		remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
 
		// Completed order emails
		remove_action( 'woocommerce_order_status_completed_notification', array( $email_class->emails['WC_Email_Customer_Completed_Order'], 'trigger' ) );
 
		// Note emails
		remove_action( 'woocommerce_new_customer_note_notification', array( $email_class->emails['WC_Email_Customer_Note'], 'trigger' ) );
}

Woocommerce, implementar TPV Servired

Woocommerce Servired integration light es un plugin muy sencillo para implementar la pasarela de pago de Servired con Woocommerce.

Elijes el método de pago “Servired Light” desde los ajustes de Woocommerce.

En el formulario de ajustes de Servired Light introduces los datos proporcionados por el banco y listo!

A mi me funcionó de maravilla, aunque también existen las opciones oficiales de redsys para las pasarelas de pago tanto para woocommerce como como para otras plataformas. Desde aquí puedes descargar los plugins y la documentación.

 

woocommerce-servired-light-1

woocommerce-servired-light-2

Woocommerce, directo a la página de compra en un click

En Woocommerce puedes ir directamente a la página de compra sin pasar por la ficha de producto ni el carrito de compra, añadiendo un enlace a un botón y el siguiente código en tu archivo functions.php.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
Esta es la escructura que debe tener el enlace de tu botón:
http://mi-sitio-web.com?add-to-cart=idProducto
Por ejemplo:
http://mi-sitio-web.com?add-to-cart=28
*/
 
// Código a poner en functions.php
add_filter ('add_to_cart_redirect', 'redirect_to_checkout_page');
 
function redirect_to_checkout_page() {
 
	global $woocommerce;
 
	$checkout_url = $woocommerce->cart->get_checkout_url();
	return $checkout_url;
}