Fragmentos de código para Woocommerce

calendar
icon view 1667
icon time 5 min.

En el listado de buenas prácticas a la hora de customizar nuestro sitio web desarrollado en WordPress nos encontramos el de añadir hooks al archivo functions.php de nuestra plantilla hija (en caso que estemos usando una plantilla de terceros).

¿Qué son los Hooks en WordPress?

Para aquellos que no sepan en que consisten, los hooks son funciones que se pueden aplicar a una acción o un filtro en WordPress para cambiar su funcionalidad predeterminada en el sistema.

Gracias a la gran comunidad de WordPress, en internet encontramos bastante documentación al respecto, con fragmentos de códigos preparados para copiar/pegar y utilizar en nuestro sitio al instante.

Woocommerce hooks

A continuación voy a compartir aquellos fragmentos de código que me han sido de ayuda en el desarrollo de sitios web en WordPress a modo de repositorio.

Fragmentos de código para Woocommerce

Redirigir usuario a la página Finalizar pedido

Si queremos redirigir al usuario directamente a la página «Finalizar pedido» de Woocommerce una vez que el usuario añade un producto al carro, añade este código.

function cod_redirect_checkout_add_cart( $url ) {
$page = get_page_by_title( "Checkout" );
$url = get_permalink($page->ID);
return $url;
}

Eliminar campos al finalizar el pedido

En un proceso de compra, cuantos menor sea el número de datos que el usuario deba introducir para finalizar el pedido mejor. Si no necesitas alguno de los que viene por defecto puedes usar este hook.

En este caso eliminaremos el campo «Nombre de la empresa», pero podemos ocultar el que necesitemos.

function quadlayers_remove_checkout_fields( $fields ) {
unset($fields['billing']['billing_company']);
return $fields;
}

Eliminar enlaces a detalles del producto

Si por algún motivo no te interesa que el usuario acceda a la página de detalle del producto puedes eliminar el enlace en la página del catálogo con este código.

remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );

Desactiva el efecto zoom en la imagen del producto

Si no es necesario visualizar al detalle la imagen del producto, puede que te interese deshabilitar esta opción para mejorar la experiencia de usuario y no distraerlo con funciones que no aporten valor durante la navegación.

add_action( 'wp', 'njengah_remove_zoom_effect_theme_support', 99 );
function njengah_remove_zoom_effect_theme_support() {
remove_theme_support( 'wc-product-gallery-zoom' );
remove_theme_support( 'wc-product-gallery-lightbox' );
remove_theme_support( 'wc-product-gallery-slider' );
}

Selecciona variaciones del producto desde la página de catálogo

Por defecto Woocommerce permite seleccionar variaciones del producto desde la página de detalles, si necesitas añadir esta opción mientras el usuario navega por el catálogo de la tienda usa este código

add_action( 'woocommerce_before_shop_loop', 'handsome_bearded_guy_select_variations' );

function handsome_bearded_guy_select_variations() {
remove_action( ‘woocommerce_after_shop_loop_item’, ‘woocommerce_template_loop_add_to_cart’, 10 );
add_action( ‘woocommerce_after_shop_loop_item’, ‘woocommerce_template_single_add_to_cart’, 30 );
}

Elimna el campo de cantidad

¿No quieres que el usuario pueda seleccionar la cantidad de un producto? Con este código eliminas automáticamente el campo cantidad del formulario en la página de detalles.

function cw_remove_quantity_fields( $return, $product ) {
return true;
}
add_filter( 'woocommerce_is_sold_individually', 'cw_remove_quantity_fields', 10, 2 );

Elimina las pestañas del producto en la página de detalle

En función de las características de los productos que tengas en la tienda, quizás te interese ocultar de forma temporal algunas pestañas de la página de detalles. Editando el código puedes elegir mantener la que quieras. Por ejemplo mantener los comentarios y la información adicional, porque con la descripción corta es suficiente.

add_filter( 'woocommerce_product_tabs', 'my_remove_all_product_tabs', 98 );
function my_remove_all_product_tabs( $tabs ) {
unset( $tabs['description'] ); // Remove the description tab
unset( $tabs['reviews'] ); // Remove the reviews tab
unset( $tabs['additional_information'] ); // Remove the additional information tab
return $tabs;
}

Ocultar todas las formas de envío cuando hay formas de envío gratuitas

¿Si ofreces al usuario una forma de envío gratuita porque mostrarle otras opciones? Este fragmento de código te permitirá ocultar otros métodos de envío y dejar solo el envío gratuito.


add_filter('woocommerce_available_shipping_methods', 'hide_all_shipping_when_free_is_available', 10, 1);
function hide_all_shipping_when_free_is_available($available_methods) {
if (isset($available_methods['free_shipping'])) :
// Get Free Shipping array into a new array
$freeshipping = array();
$freeshipping = $available_methods['free_shipping'];
// Empty the $available_methods array
unset($available_methods);
// Add Free Shipping back into $avaialble_methods
$available_methods = array();
$available_methods[] = $freeshipping;
endif;
return $available_methods;
}

Función de envío mediante SMTP

Podemos encontrarnos en la situación que al finalizar un pedido o recuperar la contraseña, el usuario no recibe los emails correspondientes. Puede ocurrir que al trabajar con hostings compartidos, estos tienen bloqueado en su gran mayoría el envío de emails de cuentas no verificadas. Para solucionarlo debemos configurar el servidor SMTP en WordPress.

También podemos hacer uso de plugins que nos facilitará el proceso, pero si podemos prescindir de terceros mejor. Solo tienes que editar los parámetros de la cuenta de correo y el servidor SMTP de tu hosting en el código que puedes ver a continuación y listo.


add_action('phpmailer_init','send_smtp_email');
function send_smtp_email( $phpmailer )
{
// Define que estamos enviando por SMTP
$phpmailer->isSMTP();
//La dirección del HOST del servidor de correo SMTP p.e. smtp.midominio.com
$phpmailer->Host = "your server smtp address";
// Uso autenticación por SMTP (true|false)
$phpmailer->SMTPAuth = true;
// Puerto SMTP - Suele ser el 25, 465 o 587
$phpmailer->Port = "587";
// Usuario de la cuenta de correo
$phpmailer->Username = "user name";
// Contraseña para la autenticación SMTP
$phpmailer->Password = "password";
// El tipo de encriptación que usamos al conectar - ssl (deprecated) o tls
$phpmailer->SMTPSecure = "tls";
$phpmailer->From = "tucuenta@decorreo.com";
$phpmailer->FromName = "Tu nombre";
}

Estos son solo algunos de los fragmentos de código que podemos utilizar gracias a los hooks que ofrece Woocommerce a través de su API. La lista irá aumentando con el tiempo.

En esta página podéis ver todos los hooks disponibles para Woocommerce

Buscar artículos por: , ,

Categoría/s: Diseño y desarrollo web


Entradas relacionadas