9 snippets para WooCommerce súper útiles

Desde hace más de 5 años, WooCommerce está reconocido como el plugin de comercio electrónico más potente y sencillo de utilizar para WordPress. En este artículo, he compilado muchos snippets que he encontrado por la red con el fin de ampliar las posibilidades de WooCommerce.

Crear un enlace directo de “Añadir al carrito”

Hay veces que nos vemos en la tesitura de añadir un producto específico al carrito mediante un simple enlace. Es muy sencillo realizar esto, solamente añade ?add-to-cart=955 al final de cualquier enlace.

En este ejemplo, 955 es el id del producto, por lo que debes reemplazarlo por el id del producto que quieras añadir al carrito.

http://tuweb.com/checkout/?add-to-cart=955

Eliminar los campos de dirección en el checkout

Si vendes productos virtuales, no necesitas preguntarle al cliente por su dirección. Por lo tanto, lo mejor es eliminar los campos de dirección. Para ello, inserta el siguiente código en el fichero functions.php de tu theme:

dd_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
 
function custom_override_checkout_fields( $fields ) {
    unset($fields['billing']['billing_first_name']);
    unset($fields['billing']['billing_last_name']);
    unset($fields['billing']['billing_company']);
    unset($fields['billing']['billing_address_1']);
    unset($fields['billing']['billing_address_2']);
    unset($fields['billing']['billing_city']);
    unset($fields['billing']['billing_postcode']);
    unset($fields['billing']['billing_country']);
    unset($fields['billing']['billing_state']);
    unset($fields['billing']['billing_phone']);
    unset($fields['order']['order_comments']);
    unset($fields['billing']['billing_address_2']);
    unset($fields['billing']['billing_postcode']);
    unset($fields['billing']['billing_company']);
    unset($fields['billing']['billing_last_name']);
    unset($fields['billing']['billing_city']);
    return $fields;
}

Definir el número de productos mostrados por página

Una simple, pero efectiva manera de definir cuántos productos deben mostrarse por página. En este ejemplo, return 25 indica que se mostrarán 25 productos así que, modifica este valor con el número deseado de productos que quieras mostrar, y añade esta línea al functions.php de tu theme.

add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 25;' ), 20 );

Añade un mensaje encima del formulario de registro y login

Aquí tienes un método sencillo para añadir un mensaje personalizado encima de los formularios de registro y login. Este código se debe insertar en el fichero functions.php de tu theme.

add_action( 'woocommerce_before_customer_login_form', 'jk_login_message' );
function jk_login_message() {
    if ( get_option( 'woocommerce_enable_myaccount_registration' ) == 'yes' ) {
	?>
		<div class="woocommerce-info">
			<p><?php _e( 'Returning customers login. New users register for next time so you can:' ); ?></p>
			<ul>
				<li><?php _e( 'View your order history' ); ?></li>
				<li><?php _e( 'Check on your orders' ); ?></li>
				<li><?php _e( 'Edit your addresses' ); ?></li>
				<li><?php _e( 'Change your password' ); ?></li>
			</ul>
		</div>
	<?php
	}
}

Elimina las migas de pan

Si eres de los que crees que las migas de pan no son muy útiles, puedes eliminarlos de forma fácil añadiendo el código de abajo en el fichero functions.php de tu theme.

add_action( 'init', 'jk_remove_wc_breadcrumbs' );

function jk_remove_wc_breadcrumbs() {
    remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
}

Redirigir el botón de añadir al carrito a la página de checkout

Un truco muy interesante que te permite redirigir a los usuarios automáticamente a la página de checkout una vez han añadido un producto en sus carritos. Como muchos otros snippets de este artículo, este código lo debes insertar en el fichero functions.php de tu theme.

function add_to_cart_checkout_redirect() {
    wp_safe_redirect( get_permalink( get_option( 'woocommerce_checkout_page_id' ) ) );
    die();
}

add_action( 'woocommerce_add_to_cart', 'add_to_cart_checkout_redirect', 16 );

Reemplazar “Fuera de stock” por “Vendido”

Si vendes productos únicos, tiene más sentido que muestres el mensaje de “Vendido” que el de “Fuera de stock”. Para ello, simplemente tienes que copiar este código en el fichero functions.php de tu theme.

add_filter('woocommerce_get_availability', 'availability_filter_func');

function availability_filter_func($availability) {
	$availability['availability'] = str_ireplace('Out of stock', 'Sold', $availability['availability']);
	return $availability;
}

Eliminar gastos de envío en determinados países

Si solo quieres enviar tus productos a determinados países, puedes utilizar el siguiente código para llevarlo a cabo. Los países se pueden agregar en el array de la línea 6. Como en los demás snippets, debes agregar el código en el archivo functions.php de tu theme para que funcione.

function woo_override_checkout_fields( $fields ) { 

	$fields['shipping']['shipping_country'] = array(
		'type'      => 'select',
		'label'     => __('My New Country List', 'woocommerce'),
		'options' 	=> array('AU' => 'Australia')
	);

	return $fields; 
} 
add_filter( 'woocommerce_checkout_fields' , 'woo_override_checkout_fields' );

Mostrar el botón “El producto se encuentra en el carrito” en lugar de “Añadir al carrito”

Si un visitante ya ha añadido un producto específico a su carrito, es una genial idea notificarle que ya lo ha comprado con un mensaje en el botón de compra. Aquí tienes el snippet para llevarlo a cabo. Por supuesto, añádelo en el fichero functions.php de tu theme.

add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );
function woo_custom_cart_button_text() {
	global $woocommerce;
	foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
		$_product = $values['data'];
 
		if( get_the_ID() == $_product->id ) {
			return __('Already in cart - Add Again?', 'woocommerce');
		}
	}
	return __('Add to cart', 'woocommerce');
}
 
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );
function woo_archive_custom_cart_button_text() {
	global $woocommerce;
	foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
		$_product = $values['data'];
		if( get_the_ID() == $_product->id ) {
			return __('Already in cart', 'woocommerce');
		}
	}
	return __('Add to cart', 'woocommerce');
}

Fuente: catswhocode.com

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP