Diseño web

10 fragmentos de código indispensables para Woocommerce

PENSAMOS SOBRE

10 fragmentos de código indispensables para Woocommerce

En Unanime Creativos desarrollamos tiendas online a medida para nuestros clientes. Entre otros CMS, usamos WordPress con su archiconocida y utilizada Woocommerce. Es por eso que somos expertos en el desarrollo de tiendas online a medida y perfecto para de una forma económica lanzar tu tienda en la nube.

Como buenos desarrolladores tenemos nuestros trucos para optimizar al máximo esa herramienta que es Woocommerce. Muchos de estos fragmentos de código los hemos encontrado en Internet, no pretendemos marcar tendencia, únicamente agruparlos para que nos sean más fáciles de encontrar a todos.

Recordad siempre, utilizar la guía de buenas prácticas del desarrollador e implementar estos fragmentos en el fichero functions.php de vuestro tema hijo y comentar el código para saber qué estamos haciendo. No está demás hacer una copia de seguridad o plantear una rama de desarrollo en preproducción antes de implementar estos cambios en nuestra web.

A continuación os dejamos un listado de utilidades importantes para tu tienda online:

1. Redireccionar a la página de finalizar compra al añadir un producto al carrito.

En algunas ocasiones nos puede interesar enviar al cliente a la página de finalizar compra al añadir un producto al carrito. Para ello podemos utilizar lo siguiente:

add_filter('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout() {
    global $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    return $checkout_url;
}

2. Fijar una cantidad mínima de pedido

A veces, puede resultar interesante fijar una cantidad mínima de pedido por diversas razones. Hay muchos plugins que tienen esta funcionalidad, pero con este fragmento de código lo puedes implementar fácilmente.

add_action('woocommerce_checkout_process', 'wc_minimum_order_amount');

function wc_minimum_order_amount() {
    global $woocommerce;
    $minimum = 50;
    if ($woocommerce->cart->get_cart_total() < $minimum) { 
        $woocommerce->add_error(sprintf('tu mensaje de error', $minimum));
    }
}

3. Cambiar la imagen por defecto de Woocommerce

La imagen por defecto de Woocommerce no es muy atractiva. Para utilizar una personalizada, basta con añadir este código a tu functions.php y reemplazar por la ruta concreta a tu imagen.

add_action( 'init', 'custom_fix_thumbnail' );

function custom_fix_thumbnail() {
    add_filter('woocommerce_placeholder_img_src', 'custom_woocommerce_placeholder_img_src');
    function custom_woocommerce_placeholder_img_src( $src ) {
        $upload_dir = wp_upload_dir();
        $uploads = untrailingslashit( $upload_dir['baseurl'] );
        $src = $uploads . 'path/to/image/image.jpg';	 
        return $src;
    }
}

4. Eliminar el zoom, la galería y el slider en la ficha de producto

Menos es más. Simplifica tu página de producto eliminando distracciones innecesarias sobre el botón de comprar.

add_action('after_setup_theme', 'remove_zoom_lightbox_theme_support', 99);

function remove_zoom_lightbox_theme_support() {
    remove_theme_support('wc-product-gallery-zoom');
    remove_theme_support('wc-product-gallery-lightbox');
    remove_theme_support('wc-product-gallery-slider');
}

5. Vaciar el carrito

Fácil y simple.

add_action('init', 'my_empty_cart');

function my_empty_cart(){
    global $woocommerce;
    $woocommerce->cart->empty_cart(); 
}

6. Cambiar el texto del botón «Añadir al carrito»

Diferénciate de la competencia, personaliza tus botones y dale un toque a tu e-commerce.

/**
 * Cambiar "Añadir al carrito" en las páginas de producto
 */
function woo_custom_cart_button_text() {
  return __('Mi texto personalizado', 'woocommerce');
}
add_filter('single_add_to_cart_text', 'woo_custom_cart_button_text');

/**
 * Cambiar "Añadir al carrito" en las páginas de categoría
 */
function woo_archive_custom_cart_button_text() {
  return __( 'Mi texto personalizado', 'woocommerce' );
}
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );

7. Eliminar las pestañas de información de producto

Haz desaparecer las pestañas con la información extra de producto.

add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tab', 99);

function woo_remove_product_tab($tabs) {
    unset( $tabs['description'] );
    unset( $tabs['reviews'] );
    unset( $tabs['additional_information'] );
    return $tabs;
}

8. Eliminar las migas de pan

Si tu tienda tiene pocos productos, las migas de pan pueden molestar más ayudar. Quítalas fácilmente con este fragmento de código.

remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20);

9. Ocultar todas las formas de envío cuando hay formas de envío gratis

Para que dar más opciones cuando… ¡es gratis!

// Ocultar todas las formas de envío cuando hay formas de envío gratis
add_filter('woocommerce_available_shipping_methods', 'hide_all_shipping_when_free_is_available', 10, 1);

/**
 * @param array $available_methods
 */
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;
}

10. Añadir la forma de pago en el email al administrador

Cuando desarrollamos un e-commerce para alguien que no está acostumbrado a trabajar con uno, puede ser útil darle más información. Con este «code snippet» se añade de forma sencilla el método de pago al email del administrador.

/**
 * Añadir la forma de pago en el email al administrador
 */
add_action('woocommerce_email_after_order_table', 'woo_add_payment_method_to_admin_new_order', 15, 2);

function woo_add_payment_method_to_admin_new_order($order, $is_admin_email) {
    if ($is_admin_email) {
        echo '<p><strong>Forma de pago:</strong> ' . $order->payment_method_title . '</p>';
    }
}