WooCommerce Snippets

Si utilizas WooCommerce sabrás que es una de las herramientas para comercio electrónico más potentes que hay hoy en día en el mercado, sobre todo por su facilidad de implementar cambios y mejoras sin necesidad de tocar nada del propio código.

Hoy quiero dejar algunos códigos que incluyen funcionalidades muy útiles y que en principio no deberían ser muy complejos de implementar.

Upselling

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15 );
if ( ! function_exists( 'woocommerce_output_upsells' ) )
{
  function woocommerce_output_upsells()
  {
    woocommerce_upsell_display( 6,3 ); // Mostrar 6 productos en filas de 3
  }
}

Con esto mejoraremos la forma de mostrar productos relacionados un poco más al gusto, y con la posibilidad de mejorar las ventas cruzadas.

Reemplazar el texto de “Sin Stock” por otro

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;
}

Con esto podemos cambiar el mensaje de “Out of Stock” por, por ejemplo, “Vendido”. Muy útil si vendes productos de una unidad al ser artesanos o únicos.

Cambia el texto “Add to Cart” por “Product in cart”

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 more?', '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');
}

Seguramente os ha pasado que comienzas a navegar por un sitio y añades al carrito, y sigues navegando y acabas en el mismo producto, vuelves a decir “me gusta” y lo vuelves a añadir al carrito… pues con esto, lo evitarás.

Añadir método de pago en el correo

add_action( 'woocommerce_email_after_order_table', 'add_payment_method_to_admin_new_order', 15, 2 );
function add_payment_method_to_admin_new_order( $order, $is_admin_email )
{
  if ( $is_admin_email )
  {
    echo '<p><strong>Payment Method:</strong> ' . $order->payment_method_title . '</p>';
  }
}

Gracias a esto, cuando llegue al correo del administrador el mensaje, indicará qué método de pago se ha utilizado.

Crear un shortcode [ sale_products ] con ofertas

add_shortcode('sale_products', 'woocommerce_sale_products');
function woocommerce_sale_products( $atts ) {
  global $woocommerce_loop;
  extract(shortcode_atts(array(
    'per_page' => '12',
    'columns'  => '4',
    'orderby'  => 'date',
    'order'    => 'desc'
  ), $atts));
  $woocommerce_loop['columns'] = $columns;
  $args = array(
    'post_type'           => 'product',
    'post_status'         => 'publish',
    'ignore_sticky_posts' => 1,
    'posts_per_page'      => $per_page,
    'orderby'             => $orderby,
    'order'               => $order,
    'meta_query'          => array(
      array(
        'key'             => '_visibility',
        'value'           => array('catalog', 'visible'),
        'compare'         => 'IN'
       ),
       array(
         'key'            => '_sale_price',
         'value'          => 0,
         'compare'        => '>',
         'type'           => 'NUMERIC'
       )
    )
  );
  query_posts($args);
  ob_start();
  woocommerce_get_template_part( 'loop', 'shop' );
  wp_reset_query();
  return ob_get_clean();
}

Sin palabras. Si quieres crear una sección de ofertas, solo has de crear la página, incluir el shortcode sale_products y aparecerán las ofertas del sitio. Puedes ajustar la ordenación y los detalles cambiando los datos del código.

Añade un producto al carrito, nada más visitarlo

add_action( 'init', 'add_product_to_cart' );
function add_product_to_cart()
{
  if ( ! is_admin() )
  {
    global $woocommerce;
    $product_id = 64;
    $found = false;
    if ( sizeof( $woocommerce->cart->get_cart() ) > 0 )
    {
      foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values )
      {
        $_product = $values['data'];
        if ( $_product->id == $product_id )
          $found = true;
      }
      if ( ! $found )
        $woocommerce->cart->add_to_cart( $product_id );
    } else {
      $woocommerce->cart->add_to_cart( $product_id );
    }
  }
}

Es posible que en algún caso quieras utilizar esto, de forma que el usuario vaya añadiendo elementos al carrito según vaya navegando por la web.

Si hay envío gratuito, elimina el resto

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'] ) ) {
    $freeshipping = array();
    $freeshipping = $available_methods['free_shipping'];
    unset( $available_methods );
    $available_methods = array();
    $available_methods[] = $freeshipping;
  }
  return $available_methods;
}

Una pequeña mejora en la experiencia de usuario.

No son gran cosa, pero algunos de estos bloques de código se han convertido en pequeñas funciones o plugins que van de serie en algunos de los WooCommerce de clientes… y aquí quedan para quien los quiera usar.

Categorías WordPress

1 comentario en “WooCommerce Snippets

Deja un comentario