Está en la página 1de 11

¿CANSADO DE

COMPRAR PLUGINS?
CON ESTOS CÓDIGOS
CONSEGUIRÁS ELEVAR
TU TIENDA WOOCOMMERCE
AL SIGUIENTE NIVEL

22 FUNCIONES
OCULTAS PARA
WOOCOMMERCE
Recopilados y Desarrollados por Alex Mateo y Antonio Cantero
INSERTAR NIF
EL PRIMER PASO es insertar un campo en la página de
pago de woocommerce que puedes verlo AQUI
Luego instalas este plugin gratuito: Woocommerce pdf

EN FACTURA
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.

AVISO ANTES // Incluir NIF en la factura

DE EMPEZAR
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>’;
}

Los códigos aquí expuestos deben de añadirse al final del Configurar gastos de envío gratis
fichero functions.php de tu tema (lo puedes encontrar en
“Apariencia > Editor“) o usando el plugin Code Snippets.
para algunos productos
Te recomendamos que antes de añadir cualquier código a Para esta opción se pueden usar varios plugins,
pero con el fin de no sobrecarga tu tienda con
tu tienda online, lo pruebes en un sitio de pruebas o en un muchos plugins instalados, te explicamos a con-
tinuación un truco para hacerlo con las opcio-
servidor local. nes nativas de WooCommerce.
Todos los códigos se han testado previamente con las últi- El truco consiste en marcar el producto como
“Virtual“. (Lo puedes hacer desde la página de
mas versiones de WordPress y WooCommerce. edición del producto, en el apartado “Infor-
mación del producto“).
Y por último pegar el siguiente código al final

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


ocultar metodo de envío Personalizar tu página de
cuando el gratis agradecimiento
está activado
// Incluir NIF en la factura
//* Oculta resto de métodos de envío cuando envío gratuito está disponible
add_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;
} 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
return $rates; 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.

Mostrar productos relacionados


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.

en base a las etiquetas. //* Redirige al cliente a una página de agradecimiento personalizada cuando finaliza
su compra
add_action( ‘template_redirect’, ‘redirige_pagina_agradecimiento_personalizada’ );
Por defecto, WooCommerce muestra los pro- function redirige_pagina_agradecimiento_personalizada(){
ductos relacionados en base a su categoría y sus global $wp;
etiquetas. Sin embargo, si no quieres que tenga
en cuenta la categoría, sino solamente las etiqu- if ( is_checkout() && ! empty( $wp->query_vars[ ‘order-received’ ] ) ) {
etas, tendrás que incluir el siguiente código al fi-
nal de tu fichero functions.php:del fichero func- wp_redirect( ‘http://www.tusitioweb.com/pagina-de-agradecimiento/’ );
tions.php de tu tema: exit;
}
}

Solamente tienes que sustituir la url


“http://www.tusitioweb.com/pagina-de-agradecimiento/“,
por la de la página que acabas de crear.
//* Muestra productos relacionados sólo por etiquetas
add_filter( ‘woocommerce_product_related_posts_relate_by_category’, ‘__return_
false’ );
Mostrar informes solo de los
pedidos completados.
WooCommerce incluye en los informes
de ventas todos los pedidos recibidos

Limitar el envío a
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
algunas regiones
añadiendo el siguiente código snippet al final
del functions.php:
//* Oculta laS opciones de gasto de envío para algunas regiones
function is_state_without_shipping(){
global $woocommerce;
//* Muestra solo pedidos completados en los informes global $states;
add_filter( ‘woocommerce_reports_get_order_report_data_args’, ‘muestra_pedidos_ $isState = false;
completados_informes’ ); //Aquí define tu lista de estados o provincias sin envío
function muestra_pedidos_completados_informes( $args ) { $states_list = array( ‘codigo_provincia’ );
$customer_state = $woocommerce->customer->get_shipping_state();
$args[ ‘order_status’ ] = array( ‘completed’ ); // Comprueba si el destino coincide con una región sin envío disponible
if( in_array( $customer_state, $states_list) ){
return $args; $isState = true;
} }
return $isState;

Enviar los clientes directamente


}
add_filter( ‘woocommerce_package_rates’, ‘hide_shipping_some_regions’, 10, 2 );
function hide_shipping_some_regions( $rates, $package ) {

a la página de pago
Consiste en que después de que el cliente haga clic $state = is_state_without_shipping();
en el botón de “Añadir al carro“, se le redirija a la pá-
gina de pago. if ( $state ) {
Esta opción resulta muy interesante cuando usas WooCom- // Deshabilita la opción de envío a estas provincias
merce como página de ventas y no como tienda. En estos $rates = array();
casos, desde la página de ventas solo puedes comprar el pro- wc_add_notice( ‘Lo sentimos, pero la opción de envíos no está disponible para esta región.’, ‘error’ );
ducto que se esté promocionando, por lo que no tiene sen- }
tido pasar por la página de carrito para revisar la compra. return $rates;
}
Para redirigir al cliente directamente a la página de pago,
debes usar el siguiente código:

// Redirige a la página de pago después de Lo único que tienes que configurar son los códigos de las provincias o estado que no dispongan de envío. Para ello,
añadir el producto en la línea:
add_filter( ‘woocommerce_add_to_cart_
redirect’, ‘custom_add_to_cart_redirect’ ); $states_list = array( ‘codigo_provincia’ );
function custom_add_to_cart_redirect() {
Sustituye ‘codigo_provincia’ por los códigos que correspondan a cada región separados por comas. Por ejemplo;
update_option( ‘woocommerce_cart_ para Ceuta y Melilla, sería:
redirect_after_add’ , ‘yes’ );
return WC()->cart->get_checkout_url(); $states_list = array( ‘CE’, ‘ML’ );
}
Obligar la compra de productos
combinados Ocultar el formulario
para introducir cupones
descuento si no tienes
Con este truco puede sugerir la compra de dos productos combinados que se suelen
promociones activas
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 ¿Sabías que un buen porcentaje de los abandonos de carrito tiene su origen en el
functions.php: formulario para validar los cupones descuento?
Un porcentaje de las ventas online se pierden debido a que el cliente antes de hacer
//* Obliga la compra de productos combinado el pago, sale de la web en busca de cupones descuento y si no encuentra ninguno,
add_action( ‘woocommerce_after_calculate_totals’, ‘forzar_compra_productos_combinados’, 10 ); hay casos en los que no vuelve a retomar la compra.
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 ]; Para evitar eso, puedes hacer 2 cosas:
array_splice( $products_list, $pos, 1);
} Desactivar los cupones en tu tienda desmarcando la opción “Habilitar el uso de
} cupones” que encontrarás en “WooCommerce > Ajustes > Finalizar compra“.
if ( !empty( $products_list ) || ( $products_amount_list !== count( $list_products )) ) {
$product_added_name = get_the_title( $products_added_list[0] ); Ocultar el formulario de los cupones, pero mantener activado el uso de cupones
$product_required_name = get_the_title( $products_list[0] ); por si los canjeas a través de enlaces como hemos visto antes. Para ocultar el for-
wc_add_notice( ‘AVISO: El producto “’.$product_added_name.’”, necesita este otro producto; “’.$product_ mulario, usa el siguiente código:
required_name.’” para funcionar.’ , ‘notice’ );
}
}
add_action( ‘woocommerce_before_cart’, function(){ // Oculta el campo de cupones descuento del formulario
wc_clear_notices(); function ocultar_campo_cupones( $enabled ) {
} );
if ( is_cart() || is_checkout() ) {
$enabled = false;
}

Para configurarlo solo tienes que sustituir los números de esta línea: “$prod- return $enabled;
ucts_list = array( ‘14893’, ‘14881’ );” por los IDs de tus productos. }
add_filter( ‘woocommerce_coupons_enabled’, ‘ocultar_campo_cupones’ );
Personalizar la etiqueta de Simplificar la página
de pago eliminando
campos

Este truco consiste en cambiar el texto de la etiqueta “Rebajado” que se El formulario para los datos de facturación de WooCommerce solicita una serie de da-
muestra en la foto de producto cuando aplicas una bajada de precios. Para tos por defecto, varios de ellos prescindibles según a quien vaya dirigida la venta. Por
ello sólo tienes que usar el siguiente código snippet: 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
En este caso hemos cambiado el texto “Rebajado” por el de “Oferta exclusiva“. número de teléfono del cliente o su provincia, yo diría que con su dirección de correo
Aunque puedes usar el texto que desees sustituyendo la frase entre comillas -en electrónico y su código postal es más que suficiente.
este caso “¡Oferta exclusiva!”- en la línea: __(‘¡Oferta exclusiva!’, ‘woocommerce’ )
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.

// Muestra el porcentaje de descuento en el producto


add_filter( ‘woocommerce_sale_flash’, ‘personaliza_etiqueta_rebajado’, 10, 3 );
function personaliza_etiqueta_rebajado( $text, $post, $product ) { //Simplifica la página de pago suprimiendo campos innecesarios
add_filter( ‘woocommerce_enable_order_notes_field’, ‘__return false’ );
$text = ‘<span style=”padding: 10px; background-color: #80c878; color: #fff; font-weight: add_filter( ‘woocommerce_checkout_fields’ , ‘simplifica_pagina_de_pago’ );
bold;”>’. __(‘¡Oferta exclusiva!’, ‘woocommerce’ ) . ‘%</span>’; function simplifica_pagina_de_pago( $fields ) {
return $text; //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;
}
Cambiar el texto del
¿ TE GUSTARÍA APRENDER MÁS ? botón que lleva a la
página de pago
MIRA NUESTRO
NUEVO
// Cambia texto del botón ir a la caja
remove_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(

CURSO
‘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.

DE WOOCOMMERCE Personalizar texto


del botón
PERO ESO TE LO CONTAMOS AQUÍ “Añadir al carro“
// Personalizar texto del botón añadir al carro
add_filter( ‘woocommerce_product_single_add_to_cart_text’, ‘personaliza_texto_boton_
anadir_carro’ );
function personaliza_texto_boton_anadir_carro() {
return __( ‘Comprar’, ‘woocommerce’ );
}

EBOOK REALIZADO POR: Para añadir tu propio texto sustituye en el código anterior la palabra Comprar por el
texto que desees, siempre entre comillas simples.
ALEX MATEO (sisube.com) Y ANTONIO CANTERO ( woodemia.com)
FOTOGRAFIAS RECOPILADAS EN FREEPIK.ES
Configurar una Eliminar la
cantidad de pedido pestaña de
mínimo información
Con este truco podrás configurar una cantidad de pedido mínimo en tu tienda online y mostrar un aviso adicional
de la página de
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

producto
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ínimo


add_action( ‘woocommerce_checkout_process’, ‘cantidad_de_pedido_minimo’ );
add_action( ‘woocommerce_before_cart’ , ‘cantidad_de_pedido_minimo’ ); // Elimina la pestaña de información adicional de la ficha de producto
function cantidad_de_pedido_minimo() { add_filter( ‘woocommerce_product_tabs’, ‘elimina_pestana_ficha_producto’, 98 );
function elimina_pestana_ficha_producto( $tabs ) {
// Define aquí la cantidad mínima de pedido permitido
$minimum = 80; unset( $tabs[ ‘additional_information’ ] );
if ( WC()->cart->total < $minimum ) { if( is_cart() ) { wc_print_notice( return $tabs;
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’

Modificar el orden
);
} else {

por defecto de la
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.’ ,

página de productos
wc_price( $minimum ),
wc_price( WC()->cart->total )
), ‘error’
);
} 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.
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:
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€ // Muestra el orden de los productos del catálogo según en nombre
sería; $minimun = 50; add_filter(‘woocommerce_default_catalog_orderby’, ‘orden_catalogo_productos_
personalizado’);
function orden_catalogo_productos_personalizado() {
return ‘title’;
}
Quitar una categoría del widget Deshabilitar una
de categorías de productos 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:
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 // Deshabilita pasarela de pago para determinados países
premium disponibles sólo para determinados clientes y no quieres add_filter( ‘woocommerce_available_payment_gateways’, ‘deshabilita_pasarela_pago_
que esa categoría se muestre en la tienda, puedes conseguirlo algunos_paises’ );
añadiendo el siguiente código al final del fichero functions.php function deshabilita_pasarela_pago_algunos_paises( $available_gateways ) {
de tu tema:
//Lista de países a los que deshabilitar la pasarela de pago
$countries = array( ‘FR’, ‘PT’ );
//Pasarela de pago a deshabilitar
$payment_gateway = ‘cod’;
// Elimina una categoría del widget de categorías de producto
add_filter( ‘woocommerce_product_categories_widget_args’, ‘elimina_categoria_ if ( isset( $available_gateways[ $payment_gateway ] ) && in_array( WC()->customer->get_
producto_widget’ ); country(), $countries ) ) {
function elimina_categoria_producto_widget( $cat_args ) {
unset( $available_gateways[ $payment_gateway ] );
$cat_args[ ‘exclude’ ] = array( ‘165’ ); }
return $cat_args; 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)
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( Por último, sólo te queda definir la pasarela de pago que vas a deshabilitar. Para ello
‘ID_Categoría’ );“. 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“.
Mostrar tu tienda sólo a Usuarios Cambiar el número de productos
registrados relacionados que se deben mostrar
Aunque ya hay muchos temas premium que te pemiten configurar esto directamente
Esta configuración es muy usada por ejemplo, para propietarios de tiendas que sólo desde su panel de ajustes, si tu tema no dispone de esa opción, no te preocupes
venden a mayoristas. porque con este sencillo truco podrás conseguirlo igualmente.
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 // Personaliza la forma en que se muestran los productos relacionados
tienda, la de carrito o la de pago, sean redirigidas a la página de registro de cliente. add_filter( ‘woocommerce_output_related_products_args’, ‘salida_productos_relacionados_
personalizada’ );
function salida_productos_relacionados_personalizada( $args ) {
// Tienda sólo visible a usuarios registrados
add_action( ‘template_redirect’, ‘tienda_visible_usuarios_registrados’ ); // Muestra 4 productos distribuidos en filas de 2
function tienda_visible_usuarios_registrados() { $args[ ‘posts_per_page’ ] = 4; // Número de productos a mostrar
$args[ ‘columns’ ] = 2; // Número de productos que se muestra por cada fila
if ( !is_user_logged_in() && ( is_woocommerce() || is_cart() || is_checkout()) ) {
return $args;
$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 producto
En 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.

Sólo tienes que sustituir el número


// Cambia el texto por defecto “Sin stock” de productos relacionado que
add_filter( ‘woocommerce_get_availability’, ‘modifica_etiqueta_sin_stock’, 1, 2); quieres que se muestren ($args[
function modifica_etiqueta_sin_stock( $availability, $product ) { ‘posts_per_page’ ] = 4; se mostrarán
4 productos) y el número de
if ( !$product->is_in_stock() ) $availability[ ‘availability’ ] = __( ‘Sin existencias’, columnas en los que se distribuirán
‘woocommerce’); ($args[ ‘columns’ ] = 2; se mostrarán
2 productos en la primera fila y
return $availability; otros 2 en la siguiente fila).
}
¿ TE GUSTARÍA APRENDER MÁS ?
MIRA NUESTRO
NUEVO
CURSO
DE WOOCOMMERCE
PERO ESO TE LO CONTAMOS AQUÍ

EBOOK REALIZADO POR:


ALEX MATEO (sisube.com) Y ANTONIO CANTERO ( woodemia.com)
FOTOGRAFIAS RECOPILADAS EN FREEPIK.ES

También podría gustarte