Woocommerce 2015

11
CON ESTOS CÓDIGOS CONSEGUIRÁS ELEVAR TU TIENDA WOOCOMMERCE AL SIGUIENTE NIVEL 22 FUNCIONES OCULTAS PARA WOOCOMMERCE ¿CANSADO DE COMPRAR PLUGINS? Recopilados y Desarrollados por Alex Mateo y Antonio Cantero

description

Plugins

Transcript of Woocommerce 2015

Page 1: Woocommerce 2015

CON ESTOS CÓDIGOS CONSEGUIRÁS ELEVAR

TU TIENDA WOOCOMMERCE AL SIGUIENTE NIVEL

22 FUNCIONES OCULTAS PARA

WOOCOMMERCE

¿CANSADO DE COMPRAR PLUGINS?

Recopilados y Desarrollados por Alex Mateo y Antonio Cantero

Page 2: Woocommerce 2015

AVISO ANTES DE EMPEZAR

Los códigos aquí expuestos deben de añadirse al final del

fichero functions.php de tu tema (lo puedes encontrar en

“Apariencia > Editor“) o usando el plugin Code Snippets.

Te recomendamos que antes de añadir cualquier código a

tu tienda online, lo pruebes en un sitio de pruebas o en un

servidor local.

Todos los códigos se han testado previamente con las últi-

mas versiones de WordPress y WooCommerce.

Para esta opción se pueden usar varios plugins, pero con el fin de no sobrecarga tu tienda con muchos plugins instalados, te explicamos a con-tinuación un truco para hacerlo con las opcio-nes nativas de WooCommerce.

El truco consiste en marcar el producto como “Virtual“. (Lo puedes hacer desde la página de edición del producto, en el apartado “Infor-mación del producto“).

Y por último pegar el siguiente código al final

// Incluir NIF en la factura

add_filter( ‘wpo_wcpdf_billing_address’, ‘incluir_nif_en_factura’ );

function incluir_nif_en_factura( $address ){ global $wpo_wcpdf;

echo $address . ‘<p>’; $wpo_wcpdf->custom_field( ‘NIF’, ‘NIF: ‘ ); echo ‘</p>’;}

EL PRIMER PASO es insertar un campo en la página de pago de woocommerce que puedes verlo AQUILuego instalas este plugin gratuito: Woocommerce pdf invoice & packing list, para que aparezca el DNI con este plugin es necesario que edites el function.php de tu tema e insertes este código.

add_filter( ‘woocommerce_cart_needs_shipping_address’, ‘__return_true’, 50 );

Configurar gastos de envío gratis para algunos productos

INSERTAR NIFEN FACTURA

Page 3: Woocommerce 2015

Por defecto, WooCommerce muestra los pro-ductos relacionados en base a su categoría y sus etiquetas. Sin embargo, si no quieres que tenga en cuenta la categoría, sino solamente las etiqu-etas, tendrás que incluir el siguiente código al fi-nal de tu fichero functions.php:del fichero func-tions.php de tu tema:

// Incluir NIF en la factura

//* Oculta resto de métodos de envío cuando envío gratuito está disponibleadd_filter( ‘woocommerce_package_rates’, ‘mostrar_solo_envio_gratis’, 10, 2 );function mostrar_solo_envio_gratis( $rates, $package ) { global $woocommerce; if ( isset( $rates[ ‘free_shipping’ ] ) ) {

// Sólo muestra la opción de envío gratuito $free_shipping = $rates[ ‘free_shipping’ ]; $rates = array(); $rates[ ‘free_shipping’ ] = $free_shipping; }

return $rates;}

//* Muestra productos relacionados sólo por etiquetasadd_filter( ‘woocommerce_product_related_posts_relate_by_category’, ‘__return_false’ );

ocultar metodo de envío cuando el gratis está activado

Mostrar productos relacionadosen base a las etiquetas.

Personalizar tu página de agradecimiento

WooCommerce incluye por defecto una página de agradecimiento a la que redirige a todos los clientes cuando finalizan una compra. Sin embargo, puede ser interesante crear tu propia página de agradecimiento para añadir alguna promoción especial o simplemente para personalizar el texto y diseño de la página.

Para crear tu propia página de agradecimiento, sólo tienes que crear una página nueva y personalizar con tu propio texto o usando shortcodes.

//* Redirige al cliente a una página de agradecimiento personalizada cuando finaliza su compraadd_action( ‘template_redirect’, ‘redirige_pagina_agradecimiento_personalizada’ ); function redirige_pagina_agradecimiento_personalizada(){ global $wp;

if ( is_checkout() && ! empty( $wp->query_vars[ ‘order-received’ ] ) ) { wp_redirect( ‘http://www.tusitioweb.com/pagina-de-agradecimiento/’ ); exit; }}

Solamente tienes que sustituir la url “http://www.tusitioweb.com/pagina-de-agradecimiento/“, por la de la página que acabas de crear.

Page 4: Woocommerce 2015

Mostrar informes solo de los pedidos completados.

WooCommerce incluye en los informes de ventas todos los pedidos recibidos independientemente del estado en que se encuentren; “En espera“, “Procesando” o “Completado“.

En muchos casos, sólo nos interesa ver en los informes los pedidos que están completados y excluir el resto. Esto se puede hacer añadiendo el siguiente código snippet al final del functions.php:

Enviar los clientes directamente a la página de pago

//* Muestra solo pedidos completados en los informesadd_filter( ‘woocommerce_reports_get_order_report_data_args’, ‘muestra_pedidos_completados_informes’ );function muestra_pedidos_completados_informes( $args ) {

$args[ ‘order_status’ ] = array( ‘completed’ );

return $args;}

// Redirige a la página de pago después de añadir el productoadd_filter( ‘woocommerce_add_to_cart_redirect’, ‘custom_add_to_cart_redirect’ );function custom_add_to_cart_redirect() {

update_option( ‘woocommerce_cart_redirect_after_add’ , ‘yes’ ); return WC()->cart->get_checkout_url();}

Consiste en que después de que el cliente haga clic en el botón de “Añadir al carro“, se le redirija a la pá-gina de pago.

Esta opción resulta muy interesante cuando usas WooCom-merce como página de ventas y no como tienda. En estos casos, desde la página de ventas solo puedes comprar el pro-ducto que se esté promocionando, por lo que no tiene sen-tido pasar por la página de carrito para revisar la compra.

Para redirigir al cliente directamente a la página de pago, debes usar el siguiente código:

Limitar el envío a algunas regiones

//* Oculta laS opciones de gasto de envío para algunas regionesfunction is_state_without_shipping(){ global $woocommerce; global $states; $isState = false; //Aquí define tu lista de estados o provincias sin envío $states_list = array( ‘codigo_provincia’ ); $customer_state = $woocommerce->customer->get_shipping_state(); // Comprueba si el destino coincide con una región sin envío disponible if( in_array( $customer_state, $states_list) ){ $isState = true; } return $isState;}add_filter( ‘woocommerce_package_rates’, ‘hide_shipping_some_regions’, 10, 2 );function hide_shipping_some_regions( $rates, $package ) { $state = is_state_without_shipping();

if ( $state ) { // Deshabilita la opción de envío a estas provincias $rates = array(); wc_add_notice( ‘Lo sentimos, pero la opción de envíos no está disponible para esta región.’, ‘error’ ); } return $rates;}

Lo único que tienes que configurar son los códigos de las provincias o estado que no dispongan de envío. Para ello, en la línea:

$states_list = array( ‘codigo_provincia’ );

Sustituye ‘codigo_provincia’ por los códigos que correspondan a cada región separados por comas. Por ejemplo; para Ceuta y Melilla, sería:

$states_list = array( ‘CE’, ‘ML’ );

Page 5: Woocommerce 2015

Obligar la compra de productos combinados

//* Obliga la compra de productos combinado add_action( ‘woocommerce_after_calculate_totals’, ‘forzar_compra_productos_combinados’, 10 );function forzar_compra_productos_combinados( $cart ){ $cart_items = $cart->get_cart(); $products_added_list = array(); // Tu lista de productos (SOLO 2 PRODUCTOS) $products_list = array( ‘14893’, ‘14881’ ); $products_amount_list = count( $list_products ); foreach ( $cart_items as $key => $item ) { $pos = array_search( $item[ ‘data’ ]->id, $products_list ); if ( isset( $pos ) ) { $products_added_list[] = $products_list[ $pos ]; array_splice( $products_list, $pos, 1); } } if ( !empty( $products_list ) || ( $products_amount_list !== count( $list_products )) ) { $product_added_name = get_the_title( $products_added_list[0] ); $product_required_name = get_the_title( $products_list[0] ); wc_add_notice( ‘AVISO: El producto “’.$product_added_name.’”, necesita este otro producto; “’.$product_required_name.’” para funcionar.’ , ‘notice’ ); }}add_action( ‘woocommerce_before_cart’, function(){ wc_clear_notices();} );

Con este truco puede sugerir la compra de dos productos combinados que se suelen vender juntos. Puede resultar interesante cuando se venden productos por piezas.

Para poder aplicar este truco debes pegar este código al final de tu fichero functions.php:

Para configurarlo solo tienes que sustituir los números de esta línea: “$prod-ucts_list = array( ‘14893’, ‘14881’ );” por los IDs de tus productos.

Ocultar el formulario para introducir cupones descuento si no tienes promociones activas

¿Sabías que un buen porcentaje de los abandonos de carrito tiene su origen en el formulario para validar los cupones descuento?

Un porcentaje de las ventas online se pierden debido a que el cliente antes de hacer el pago, sale de la web en busca de cupones descuento y si no encuentra ninguno, hay casos en los que no vuelve a retomar la compra.

Para evitar eso, puedes hacer 2 cosas:

Desactivar los cupones en tu tienda desmarcando la opción “Habilitar el uso de cupones” que encontrarás en “WooCommerce > Ajustes > Finalizar compra“. Ocultar el formulario de los cupones, pero mantener activado el uso de cupones por si los canjeas a través de enlaces como hemos visto antes. Para ocultar el for-mulario, usa el siguiente código:

// Oculta el campo de cupones descuento del formulariofunction ocultar_campo_cupones( $enabled ) { if ( is_cart() || is_checkout() ) { $enabled = false; } return $enabled;}add_filter( ‘woocommerce_coupons_enabled’, ‘ocultar_campo_cupones’ );

Page 6: Woocommerce 2015

Personalizar la etiqueta de

Este truco consiste en cambiar el texto de la etiqueta “Rebajado” que se muestra en la foto de producto cuando aplicas una bajada de precios. Para ello sólo tienes que usar el siguiente código snippet:

En este caso hemos cambiado el texto “Rebajado” por el de “Oferta exclusiva“. Aunque puedes usar el texto que desees sustituyendo la frase entre comillas -en este caso “¡Oferta exclusiva!”- en la línea: __(‘¡Oferta exclusiva!’, ‘woocommerce’ )

// Muestra el porcentaje de descuento en el productoadd_filter( ‘woocommerce_sale_flash’, ‘personaliza_etiqueta_rebajado’, 10, 3 );function personaliza_etiqueta_rebajado( $text, $post, $product ) { $text = ‘<span style=”padding: 10px; background-color: #80c878; color: #fff; font-weight: bold;”>’. __(‘¡Oferta exclusiva!’, ‘woocommerce’ ) . ‘%</span>’;

return $text;}

Simplificar la página de pago eliminando campos

El formulario para los datos de facturación de WooCommerce solicita una serie de da-tos por defecto, varios de ellos prescindibles según a quien vaya dirigida la venta. Por ejemplo, una tienda online que sólo vende en España al cliente final, no tiene sentido que la página de pago solicite el país o el nombre de empresa. Y lo mismo ocurre con el número de teléfono del cliente o su provincia, yo diría que con su dirección de correo electrónico y su código postal es más que suficiente.

No tiene sentido hacer perder tiempo al cliente pidiéndole datos que no vas a usar.

Con el siguiente código te muestro cómo eliminar los campos; País, Empresa, Provincia y Número de teléfono.

//Simplifica la página de pago suprimiendo campos innecesariosadd_filter( ‘woocommerce_enable_order_notes_field’, ‘__return false’ );add_filter( ‘woocommerce_checkout_fields’ , ‘simplifica_pagina_de_pago’ );function simplifica_pagina_de_pago( $fields ) {

//Elimina campos innecesarios unset( $fields[‘billing’][‘billing_company’] ); unset( $fields[‘billing’][‘billing_country’] ); unset( $fields[‘billing’][‘billing_state’] ); unset( $fields[‘billing’][‘billing_phone’] ); unset( $fields[‘order’][‘order_comments’] );

//Asigna nuevas clases de estilo a algunos campos del formulario $fields[‘billing’][‘billing_city’ ][ ‘class’ ][0] = ‘form-row-first’; $fields[‘billing’][‘billing_postcode’ ][ ‘class’ ][0] = ‘form-row-last’; $fields[‘billing’][‘billing_email’ ][ ‘clear’ ] = true; return $fields;}

Page 7: Woocommerce 2015

¿ TE GUSTARÍA APRENDER MÁS ?

EBOOK REALIZADO POR:ALEX MATEO (sisube.com) Y ANTONIO CANTERO ( woodemia.com)

FOTOGRAFIAS RECOPILADAS EN FREEPIK.ES

MIRA NUESTRO

NUEVOCURSODE WOOCOMMERCE

PERO ESO TE LO CONTAMOS AQUÍPersonalizar texto

del botón “Añadir al carro“

// Personalizar texto del botón añadir al carroadd_filter( ‘woocommerce_product_single_add_to_cart_text’, ‘personaliza_texto_boton_anadir_carro’ );function personaliza_texto_boton_anadir_carro() {

return __( ‘Comprar’, ‘woocommerce’ );}

Para añadir tu propio texto sustituye en el código anterior la palabra Comprar por el texto que desees, siempre entre comillas simples.

Cambiar el texto del botón que lleva a la

página de pago// Cambia texto del botón ir a la cajaremove_action( ‘woocommerce_proceed_to_checkout’, ‘woocommerce_button_proceed_to_checkout’, 20 );add_action( ‘woocommerce_proceed_to_checkout’, ‘cambia_texto_boton_ir_a_pagina_pago’ );function cambia_texto_boton_ir_a_pagina_pago() { $checkout_url = WC()->cart->get_checkout_url(); ?> <a href=”<?php echo $checkout_url; ?>” class=”checkout-button button alt wc-forward”><?php _e( ‘Terminar compra’, ‘woocommerce’ ); ?></a> <?php}

El código anterior muestra el texto “Terminar compra” en lugar del texto “Ir a la caja“. Para añadir tu propio texto, sólo tienes que sustituir dentro del código anterior donde pone “Terminar compra” por el texto que desees, siempre entre comillas.

Page 8: Woocommerce 2015

Configurar una cantidad de pedido mínimo

Con este truco podrás configurar una cantidad de pedido mínimo en tu tienda online y mostrar un aviso al cliente mientras no cumpla la condición.

Si la suma total del pedido no alcanza el mínimo, el cliente no podrá hacer el pago. Para añadir esta funcionalidad a tu tienda WooCommerce sólo tienes que pegar el siguiente código al final del fichero functions.php de tu tema:

// Define una cantidad de pedido mínimoadd_action( ‘woocommerce_checkout_process’, ‘cantidad_de_pedido_minimo’ );add_action( ‘woocommerce_before_cart’ , ‘cantidad_de_pedido_minimo’ );function cantidad_de_pedido_minimo() {

// Define aquí la cantidad mínima de pedido permitido $minimum = 80;

if ( WC()->cart->total < $minimum ) { if( is_cart() ) { wc_print_notice( sprintf( ‘Debe hacer un pedido con un mínimo de %s para poder finalizar. El coste total de su pedido actual es de %s.’ , wc_price( $minimum ), wc_price( WC()->cart->total ) ), ‘error’ ); } else {

wc_add_notice( sprintf( ‘Debe hacer un pedido con un mínimo de %s para poder finalizar. El coste total de su pedido actual es de %s.’ , wc_price( $minimum ), wc_price( WC()->cart->total ) ), ‘error’ ); } }}

Para definir tu cantidad mínima de pedido, sustituye el valor de la línea “$minimun = 80;” por el valor que te interese. Por ejemplo, para un pedido mínimo de 50€ sería; $minimun = 50;

Eliminar la pestaña de información adicional de la página de producto

// Elimina la pestaña de información adicional de la ficha de productoadd_filter( ‘woocommerce_product_tabs’, ‘elimina_pestana_ficha_producto’, 98 );function elimina_pestana_ficha_producto( $tabs ) {

unset( $tabs[ ‘additional_information’ ] );

return $tabs;}

Modificar el orden por defecto de la página de productos

Puedes cambiar el orden por defecto en el que se muestran los productos y basarlo en otros criterios, como por ejemplo; el precio o el nombre por orden alfabético. Para conseguir esto, debes añadir el siguiente código al final del fichero functions.php de tu tema:

// Muestra el orden de los productos del catálogo según en nombreadd_filter(‘woocommerce_default_catalog_orderby’, ‘orden_catalogo_productos_personalizado’);function orden_catalogo_productos_personalizado() { return ‘title’; }

WooCommerce muestra por defecto los productos de la tienda según su fecha de publicación, es decir, los últimos productos que publicaste, son los primeros en mostrarse en la página de la tienda.

Page 9: Woocommerce 2015

Quitar una categoría del widget de categorías de productos

// Elimina una categoría del widget de categorías de productoadd_filter( ‘woocommerce_product_categories_widget_args’, ‘elimina_categoria_producto_widget’ );function elimina_categoria_producto_widget( $cat_args ) { $cat_args[ ‘exclude’ ] = array( ‘165’ ); return $cat_args;}

WooCommerce dispone de un widget para mostrar en tu tienda el listado de categorías de productos que tengas disponible. Sin embargo, si tienes por ejemplo una categoría de productos premium disponibles sólo para determinados clientes y no quieres que esa categoría se muestre en la tienda, puedes conseguirlo añadiendo el siguiente código al final del fichero functions.php de tu tema:

Para configurarlo sólo tienes que especificar el ID de la categoría de producto que deseas quitar. Sustituye el texto “array( ‘165’ );” por “array( ‘ID_Categoría’ );“.

Deshabilitar una pasarela de pago específica para determinados países

Este truco resulta interesante aplicarlo cuando trabajas con alguna pasarela de pago que sólo funciona en determinados países o la opción de pago en entrega (en España, pago contrareembolso).

El truco consiste en pegar el siguiente código al final del fichero functions.php de tu tema:

// Deshabilita pasarela de pago para determinados paísesadd_filter( ‘woocommerce_available_payment_gateways’, ‘deshabilita_pasarela_pago_algunos_paises’ );function deshabilita_pasarela_pago_algunos_paises( $available_gateways ) {

//Lista de países a los que deshabilitar la pasarela de pago $countries = array( ‘FR’, ‘PT’ ); //Pasarela de pago a deshabilitar $payment_gateway = ‘cod’;

if ( isset( $available_gateways[ $payment_gateway ] ) && in_array( WC()->customer->get_country(), $countries ) ) {

unset( $available_gateways[ $payment_gateway ] ); }

return $available_gateways;}

Para definir los países a los que deseas deshabilitar la pasarela de pago, tienes que añadir su código ISO (puedes ver los códigos ISO de todos los países aquí) entre comillas en esta línea; array( ‘FR’, ‘PT’ ) sustituyendo FR y PT por los códigos de tus países. (En este ejemplo, los códigos FR y PT se refieren a Francia y Portugal)

Por último, sólo te queda definir la pasarela de pago que vas a deshabilitar. Para ello deberás sustituir en esta línea; $payment_gateway = ‘cod’; el ID ‘cod’ por el ID de tu pasarela de pago. Puedes ver el ID de tu pasarela en “WooCommerce > Ajustes > Finalizar Compra“, abajo en la sección “Pasarelas de pago“.

Page 10: Woocommerce 2015

Mostrar tu tienda sólo a Usuarios registrados

Esta configuración es muy usada por ejemplo, para propietarios de tiendas que sólo venden a mayoristas.

Pegando el siguiente código al final de tu fichero functions.php conseguirás que todos las personas que no estén registradas e intenten acceder a la página de la tienda, la de carrito o la de pago, sean redirigidas a la página de registro de cliente.

// Tienda sólo visible a usuarios registradosadd_action( ‘template_redirect’, ‘tienda_visible_usuarios_registrados’ );function tienda_visible_usuarios_registrados() {

if ( !is_user_logged_in() && ( is_woocommerce() || is_cart() || is_checkout()) ) { $my_account_page_id = get_option( ‘woocommerce_myaccount_page_id’ ); wp_redirect( get_permalink( $my_account_page_id )); exit; }}

Personalizar el texto “Sin stock” cuando no quedan existencias de un productoEn este ejemplo modifico el texto “Sin stock” por el de “Sin existencias“. Para personalizar tu texto simplemente tienes que introducirlo en la siguiente línea: __( ‘Sin existencias’, ‘woocommerce’ ) sustituyendo ‘Sin existencias‘ por tu texto, siempre entre comillas.

// Cambia el texto por defecto “Sin stock”add_filter( ‘woocommerce_get_availability’, ‘modifica_etiqueta_sin_stock’, 1, 2); function modifica_etiqueta_sin_stock( $availability, $product ) {

if ( !$product->is_in_stock() ) $availability[ ‘availability’ ] = __( ‘Sin existencias’, ‘woocommerce’);

return $availability;}

Cambiar el número de productos relacionados que se deben mostrar

Sólo tienes que sustituir el número de productos relacionado que quieres que se muestren ($args[ ‘posts_per_page’ ] = 4; se mostrarán 4 productos) y el número de columnas en los que se distribuirán ($args[ ‘columns’ ] = 2; se mostrarán 2 productos en la primera fila y otros 2 en la siguiente fila).

// Personaliza la forma en que se muestran los productos relacionadosadd_filter( ‘woocommerce_output_related_products_args’, ‘salida_productos_relacionados_personalizada’ ); function salida_productos_relacionados_personalizada( $args ) {

// Muestra 4 productos distribuidos en filas de 2 $args[ ‘posts_per_page’ ] = 4; // Número de productos a mostrar $args[ ‘columns’ ] = 2; // Número de productos que se muestra por cada fila

return $args;}

Aunque ya hay muchos temas premium que te pemiten configurar esto directamente desde su panel de ajustes, si tu tema no dispone de esa opción, no te preocupes porque con este sencillo truco podrás conseguirlo igualmente.

Page 11: Woocommerce 2015

¿ TE GUSTARÍA APRENDER MÁS ?

EBOOK REALIZADO POR:ALEX MATEO (sisube.com) Y ANTONIO CANTERO ( woodemia.com)

FOTOGRAFIAS RECOPILADAS EN FREEPIK.ES

MIRA NUESTRO

NUEVOCURSODE WOOCOMMERCE

PERO ESO TE LO CONTAMOS AQUÍ