Woocommerce Snippets para optimizar tu tienda online

Anteriormente en 5 Trucos para optimizar tu Woocommerce vimos una serie de snippets o códigos que nos permitían implementar cambios importantes en nuestra tienda online a nivel de funcionalidad y de apariencia.

En esta segunda parte, retomamos la optimización de nuestro ecommerce con WordPress y Woocommerce con una nueva serie de fragmentos para sacarle el máximo partido. Recuerda que estos códigos deben introducirse en el archivo functions.php, si te pierdes, en nuestra anterior entrada te contamos cómo hacerlo.

Woocommerce Snippets para optimizar tu tienda online

Pestaña personalizada en las fichas de producto

Si necesitamos incluir información adicional sin ensuciar demasiado nuestras fichas de producto con detalles como los gastos de envío, métodos de pago, garantía del producto, etc. Con el siguiente código podremos incluir una pestaña más donde se mostrarán los datos que queramos incluir:

/*
* INCLUIR PESTAÑA PERSONALIZADA EN LA FICHA DE PRODUCTO
*/
function woo_custom_product_tab( $tabs ) {
  $tabs['custom_tab'] = array(
    'title'     => 'TITULO',    // Sustituir TITULO por el nombre de la pestaña,
    'priority'  => 50,          // Modificar el orden de la pestaña
    'callback'  => 'woo_new_product_tab_content'
  );
  return $tabs;
}
function woo_new_product_tab_content() {
  echo 'CONTENIDO';            // Sustituir CONTENIDO por el contenido de la pestaña
}
add_filter( 'woocommerce_product_tabs', 'woo_custom_product_tab' );

Personalizar el texto del botón añadir al carrito

Por defecto, el texto de llamada a la acción de los botones de compra en Woocommerce es ‘Añadir al carrito’ un texto poco atractivo y que en cierto casos puede que no sea el idóneo para vuestra tienda online, como es nuestro caso donde hemos preferido usar el texto ‘Inscribirme’ dado que lo que ofrecemos son cursos de formación.

Con el siguiente fragmento podrás personalizar dicho texto tanto en la ficha de producto como en las páginas de tienda, categorías, etiquetas, etc.

/*
* PERSONALIZAR TEXTO DEL BOTÓN AÑADIR AL CARRITO
*/
function woo_custom_cart_button_text() {
  return __( 'COMPRAR', 'woocommerce' );   // Sustituir COMPRAR por la acción a indicar
}
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );
add_filter( 'woocommerce_product_add_to_cart_text', 'woo_custom_cart_button_text' );

Incluir nuevo campo en el formulario de pago: NIF/CIF

Anteriormente vimos como ocultar determinados campos del formulario de pago que no eran necesarios. Con este código podremos incluir todos los campos personalizados que queramos, en este ejemplo explicamos como incluir un campo para el NIF/CIF en el formulario, muy necesario si vendemos a profesionales.

Para mostrar este campo personalizado durante todo el proceso de compra y gestión del pedido, deberás incluir los siguientes fragmentos. En nuestro caso hemos utilizado el identificador ‘nif’ en todos los fragmentos.

/*
* AÑADIR CAMPO NIF/CIF EN EL FORMULARIO DE PAGO
*/
function woo_custom_field_checkout($checkout) {
  echo '<div id="additional_checkout_field">';
  woocommerce_form_field( 'nif', array( // Identificador del campo
    'type'          => 'text',
    'class'         => array('my-field-class form-row-wide'),
    'required'      => true,            // ¿El campo es obligatorio 'true' o 'false'?
    'label'       => __('NIF / CIF'),   // Nombre del campo
    'placeholder'   => __('99999999D'), // Texto de apoyo que se muestra dentro del campo
  ), $checkout->get_value( 'nif' ));    // Identificador del campo
  echo '</div>';
}
add_action( 'woocommerce_after_checkout_billing_form', 'woo_custom_field_checkout' );

/*
* ACTUALIZAR DETALLES DEL PEDIDO CON EL NUEVO CAMPO
*/
function woo_custom_field_checkout_update_order($order_id) {
  if ( ! empty( $_POST['nif'] ) ) {
    update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
  }
}
add_action( 'woocommerce_checkout_update_order_meta', 'woo_custom_field_checkout_update_order' );

/*
* MOSTRAR VALOR DEL CAMPO NIF LA PÁGINA DE EDICIÓN DEL PEDIDO
*/
function woo_custom_field_checkout_edit_order($order){
  echo '<p><strong>'.__('NIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'woo_custom_field_checkout_edit_order', 10, 1 );

/*
* INCLUIR CAMPO NIF EN EL EMAIL DE NOTIFICACIÓN AL CLIENTE
*/
function woo_custom_field_checkout_email($keys) {
  $keys[] = 'NIF';
  return $keys;
}
add_filter('woocommerce_email_order_meta_keys', 'woo_custom_field_checkout_email');

Deshabilitar pasarelas de pago en determinados países

Si tenemos la intención de vender en nuestro ecommerce fuera de España o en determinados países, hay ciertos métodos de pago que tienen sus limitaciones como ciertas Tarjetas de Crédito o el pago en efectivo.

Con el siguiente fragmento, podemos incluir estas excepciones, para ello debemos indicar primero los países a los que queremos deshabilitar la pasarela de pago, para ello debemos añadir el código ISO de cada país entre comillas y separado por comas.

A continuación hay que definir la pasarela de pago que queremos deshabilitar, para ello incluiremos la Pasarela ID, un identificador que encontramos para cada medio de pago dentro de “Woocommerce > Ajustes > Finalizar compra”. Por ejemplo, ‘cod’ se corresponde con el Pago en efectivo.

/*
* DESHABILITAR PASARELAS DE PAGO EN DETERMINADOS PAÍSES
*/
function woo_countries_gateways( $available_gateways ) {
  global $woocommerce;
  $countries = array( 'FR', 'IT', 'DE' ); // Listado de países ISO excluidos
  $payment_gateway = 'cod';               // Pasarela de pago deshabilitada
  if ( isset( $available_gateways[ $payment_gateway ] ) && in_array( $woocommerce->customer->get_country(), $countries ) ) {
    unset( $available_gateways[ $payment_gateway ] );
  }
  return $available_gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'woo_countries_gateways' );

Finalizar los pedidos automáticamente

Si vendes productos virtuales que no requieren ningún tipo de manipulación como puede ser nuestro caso con los cursos, a veces puede ser una lata tener que finalizar manualmente cada inscripción que recibimos. Para automatizar este proceso, el siguiente fragmento nos permite actualizar automáticamente cada pedido al estado de ‘Completado’.

/*
* FINALIZAR LOS PEDIDOS AUTOMÁTICAMENTE
*/
function woo_auto_complete_order( $order_id ) {
  global $woocommerce;
  if ( ! $order_id ) { return; }
  $order = new WC_Order( $order_id );
  $order->update_status( 'completed' );
}
add_action( 'woocommerce_thankyou', 'woo_auto_complete_order' );

Esperamos que estos 5 snippets para Woocommerce te hayan resultado útiles en tu tienda online, recuerda que siempre puedes optar también por el uso de plugins de WordPress para evitar tocar el código y hacerlo todo de forma mucho más sencilla.

Imagen de portada Diseñado por Freepik

No hay comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *