You are on page 1of 11

CANSADO DE

COMPRAR PLUGINS?
CON ESTOS CDIGOS
CONSEGUIRS ELEVAR
TU TIENDA WOOCOMMERCE
AL SIGUIENTE NIVEL

22 FUNCIONES
OCULTAS PARA
WOOCOMMERCE
Desarrolladas por Antonio Cantero

AVISO ANTES
DE EMPEZAR

INSERTAR NIF
EN FACTURA
// Incluir NIF en la factura

add_filter( wpo_wcpdf_billing_address, incluir_nif_en_factura );


function incluir_nif_en_factura( $address ){
global $wpo_wcpdf;

Los cdigos aqu expuestos deben de aadirse 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 aadir cualquier cdigo a
tu tienda online, lo pruebes en un sitio de pruebas o en un
servidor local.
Todos los cdigos se han testado previamente con las ltimas versiones de WordPress y WooCommerce.

EL PRIMER PASO es insertar un campo en la pgina de


pago de woocommerce que puedes verlo AQUI
Luego 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 cdigo.

echo $address . <p>;


$wpo_wcpdf->custom_field( NIF, NIF: );
echo </p>;

Configurar gastos de envo gratis


para algunos productos
Para esta opcin se pueden usar varios plugins,
pero con el fin de no sobrecarga tu tienda con
muchos plugins instalados, te explicamos a continuacin un truco para hacerlo con las opciones nativas de WooCommerce.
El truco consiste en marcar el producto como
Virtual. (Lo puedes hacer desde la pgina de
edicin del producto, en el apartado Informacin del producto).
Y por ltimo pegar el siguiente cdigo al final

add_filter( woocommerce_cart_needs_shipping_address, __return_true, 50 );

Personalizar tu pgina de
agradecimiento

ocultar metodo de envo


cuando el gratis
est activado
// Incluir NIF en la factura
//* Oculta resto de mtodos de envo cuando envo 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 ] ) ) {

}
}

// Slo muestra la opcin de envo gratuito


$free_shipping
= $rates[ free_shipping ];
$rates
= array();
$rates[ free_shipping ] = $free_shipping;

return $rates;

Mostrar productos relacionados


en base a las etiquetas.
Por defecto, WooCommerce muestra los productos relacionados en base a su categora y sus
etiquetas. Sin embargo, si no quieres que tenga
en cuenta la categora, sino solamente las etiquetas, tendrs que incluir el siguiente cdigo al final de tu fichero functions.php:del fichero functions.php de tu tema:

WooCommerce incluye por defecto una pgina de agradecimiento a la que redirige a


todos los clientes cuando finalizan una compra. Sin embargo, puede ser interesante
crear tu propia pgina de agradecimiento para aadir alguna promocin especial o
simplemente para personalizar el texto y diseo de la pgina.
Para crear tu propia pgina de agradecimiento, slo tienes que crear una pgina nueva
y personalizar con tu propio texto o usando shortcodes.

//* Redirige al cliente a una pgina de agradecimiento personalizada cuando finaliza


su compra
add_action( template_redirect, redirige_pagina_agradecimiento_personalizada );
function redirige_pagina_agradecimiento_personalizada(){
global $wp;
if ( is_checkout() && ! empty( $wp->query_vars[ order-received ] ) ) {

//* Muestra productos relacionados slo por etiquetas


add_filter( woocommerce_product_related_posts_relate_by_category, __return_
false );

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 pgina que acabas de crear.

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, slo nos interesa ver en los
informes los pedidos que estn completados
y excluir el resto. Esto se puede hacer
aadiendo el siguiente cdigo snippet al final
del functions.php:
//* Muestra solo pedidos completados en los informes
add_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;

Enviar los clientes directamente


a la pgina de pago

Consiste en que despus de que el cliente haga clic


en el botn de Aadir al carro, se le redirija a la pgina de pago.
Esta opcin resulta muy interesante cuando usas WooCommerce como pgina de ventas y no como tienda. En estos
casos, desde la pgina de ventas solo puedes comprar el producto que se est promocionando, por lo que no tiene sentido pasar por la pgina de carrito para revisar la compra.
Para redirigir al cliente directamente a la pgina de pago,
debes usar el siguiente cdigo:

// Redirige a la pgina de pago despus de


aadir el producto
add_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();
}

Limitar el envo a
algunas regiones
//* Oculta laS opciones de gasto de envo para algunas regiones
function is_state_without_shipping(){
global $woocommerce;
global $states;
$isState = false;
//Aqu define tu lista de estados o provincias sin envo
$states_list = array( codigo_provincia );
$customer_state = $woocommerce->customer->get_shipping_state();
// Comprueba si el destino coincide con una regin sin envo 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 opcin de envo a estas provincias
$rates = array();
wc_add_notice( Lo sentimos, pero la opcin de envos no est disponible para esta regin., error );
}
return $rates;

Lo nico que tienes que configurar son los cdigos de las provincias o estado que no dispongan de envo. Para ello,
en la lnea:
$states_list = array( codigo_provincia );
Sustituye codigo_provincia por los cdigos que correspondan a cada regin separados por comas. Por ejemplo;
para Ceuta y Melilla, sera:
$states_list = array( CE, ML );

Obligar la compra de productos


combinados
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 cdigo al final de tu fichero
functions.php:
//* 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();
} );

Para configurarlo solo tienes que sustituir los nmeros de esta lnea: $products_list = array( 14893, 14881 ); por los IDs de tus productos.

Ocultar el formulario
para introducir cupones
descuento si no tienes
promociones activas
Sabas 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 opcin Habilitar el uso de
cupones que encontrars en WooCommerce > Ajustes > Finalizar compra.
Ocultar el formulario de los cupones, pero mantener activado el uso de cupones
por si los canjeas a travs de enlaces como hemos visto antes. Para ocultar el formulario, usa el siguiente cdigo:
// Oculta el campo de cupones descuento del formulario
function ocultar_campo_cupones( $enabled ) {

if ( is_cart() || is_checkout() ) {

$enabled = false;
}

return $enabled;
}
add_filter( woocommerce_coupons_enabled, ocultar_campo_cupones );

Simplificar la pgina
de pago eliminando
campos

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 slo tienes que usar el siguiente cdigo 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 lnea: __(Oferta exclusiva!, woocommerce )

El formulario para los datos de facturacin de WooCommerce solicita una serie de datos por defecto, varios de ellos prescindibles segn a quien vaya dirigida la venta. Por
ejemplo, una tienda online que slo vende en Espaa al cliente final, no tiene sentido
que la pgina de pago solicite el pas o el nombre de empresa. Y lo mismo ocurre con el
nmero de telfono del cliente o su provincia, yo dira que con su direccin de correo
electrnico y su cdigo postal es ms que suficiente.
No tiene sentido hacer perder tiempo al cliente pidindole datos que no vas a usar.
Con el siguiente cdigo te muestro cmo eliminar los campos; Pas, Empresa, Provincia
y Nmero de telfono.

// 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 ) {
$text = <span style=padding: 10px; background-color: #80c878; color: #fff; font-weight:
bold;>. __(Oferta exclusiva!, woocommerce ) . %</span>;
}

//Simplifica la pgina de pago suprimiendo campos innecesarios


add_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] );

return $text;

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

TE GUSTARA APRENDER MS ?
MIRA NUESTRO

NUEVO
CURSO

Cambiar el texto del


botn que lleva a la
pgina de pago
// Cambia texto del botn 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(
Terminar compra, woocommerce ); ?></a>
<?php
}
El cdigo anterior muestra el texto Terminar compra en lugar del texto Ir a la caja. Para aadir tu propio texto, slo
tienes que sustituir dentro del cdigo anterior donde pone Terminar compra por el texto que desees, siempre entre
comillas.

DE WOOCOMMERCE

Personalizar texto
del botn
Aadir al carro

PERO ESO TE LO CONTAMOS AQU

// Personalizar texto del botn aadir al carro


add_filter( woocommerce_product_single_add_to_cart_text, personaliza_texto_boton_
anadir_carro );
function personaliza_texto_boton_anadir_carro() {
}

EBOOK REALIZADO POR:


ANTONIO CANTERO ( woodemia.com)
Montaje del pdf: ALEX MATEO (sisube.com)
FOTOGRAFIAS RECOPILADAS EN FREEPIK.ES

return __( Comprar, woocommerce );

Para aadir tu propio texto sustituye en el cdigo anterior la palabra Comprar por el
texto que desees, siempre entre comillas simples.

Configurar una
cantidad de pedido
mnimo

Eliminar la
pestaa de
informacin
adicional
de la pgina de
producto

Con este truco podrs configurar una cantidad de pedido mnimo en tu tienda online y mostrar un aviso
al cliente mientras no cumpla la condicin.
Si la suma total del pedido no alcanza el mnimo, el cliente no podr hacer el pago. Para aadir esta
funcionalidad a tu tienda WooCommerce slo tienes que pegar el siguiente cdigo al final del fichero
functions.php de tu tema:

// Define una cantidad de pedido mnimo


add_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 mnima de pedido permitido
$minimum = 80;
if ( WC()->cart->total < $minimum ) {
if( is_cart() ) {
wc_print_notice(
sprintf( Debe hacer un pedido con un mnimo 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 mnimo 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 mnima de pedido, sustituye


el valor de la lnea $minimun = 80; por el valor que te
interese. Por ejemplo, para un pedido mnimo de 50
sera; $minimun = 50;

// Elimina la pestaa de informacin adicional de la ficha de producto


add_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
pgina de productos
WooCommerce muestra por defecto los productos de la tienda
segn su fecha de publicacin, es decir, los ltimos productos que
publicaste, son los primeros en mostrarse en la pgina 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 alfabtico. Para conseguir esto, debes aadir el siguiente cdigo al final del
fichero functions.php de tu tema:

// Muestra el orden de los productos del catlogo segn en nombre


add_filter(woocommerce_default_catalog_orderby, orden_catalogo_productos_
personalizado);
function orden_catalogo_productos_personalizado() {
return title;
}

Deshabilitar una
pasarela de pago
especfica para
determinados pases

Quitar una categora del widget


de categoras de productos

Este truco resulta interesante aplicarlo cuando trabajas con alguna pasarela de pago que slo funciona en
determinados pases o la opcin de pago en entrega (en Espaa, pago contrareembolso).

WooCommerce dispone de un widget para mostrar en tu tienda


el listado de categoras de productos que tengas disponible.
Sin embargo, si tienes por ejemplo una categora de productos
premium disponibles slo para determinados clientes y no quieres
que esa categora se muestre en la tienda, puedes conseguirlo
aadiendo el siguiente cdigo al final del fichero functions.php
de tu tema:

// Elimina una categora del widget de categoras de producto


add_filter( woocommerce_product_categories_widget_args, elimina_categoria_
producto_widget );
function elimina_categoria_producto_widget( $cat_args ) {

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

// Deshabilita pasarela de pago para determinados pases


add_filter( woocommerce_available_payment_gateways, deshabilita_pasarela_pago_
algunos_paises );
function deshabilita_pasarela_pago_algunos_paises( $available_gateways ) {
//Lista de pases 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 ] );

$cat_args[ exclude ] = array( 165 );

return $cat_args;

return $available_gateways;

Para configurarlo slo tienes que especificar el ID de la categora de


producto que deseas quitar. Sustituye el texto array( 165 ); por array(
ID_Categora );.

Para definir los pases a los que deseas deshabilitar la pasarela de pago, tienes que aadir
su cdigo ISO (puedes ver los cdigos ISO de todos los pases aqu) entre comillas en
esta lnea; array( FR, PT ) sustituyendo FR y PT por los cdigos de tus pases. (En este
ejemplo, los cdigos FR y PT se refieren a Francia y Portugal)
Por ltimo, slo te queda definir la pasarela de pago que vas a deshabilitar. Para ello
debers sustituir en esta lnea; $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 seccin Pasarelas de pago.

Mostrar tu tienda slo a Usuarios Cambiar el nmero de productos


relacionados que se deben mostrar
registrados
Esta configuracin es muy usada por ejemplo, para propietarios de tiendas que slo
venden a mayoristas.
Pegando el siguiente cdigo al final de tu fichero functions.php conseguirs que
todos las personas que no estn registradas e intenten acceder a la pgina de la
tienda, la de carrito o la de pago, sean redirigidas a la pgina de registro de cliente.
// Tienda slo visible a usuarios registrados
add_action( template_redirect, tienda_visible_usuarios_registrados );
function tienda_visible_usuarios_registrados() {

Aunque ya hay muchos temas premium que te pemiten configurar esto directamente
desde su panel de ajustes, si tu tema no dispone de esa opcin, no te preocupes
porque con este sencillo truco podrs conseguirlo igualmente.
// Personaliza la forma en que se muestran los productos relacionados
add_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; // Nmero de productos a mostrar
$args[ columns ] = 2; // Nmero de productos que se muestra por cada fila

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;

return $args;

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 lnea: __( 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;

Slo tienes que sustituir el nmero


de productos relacionado que
quieres que se muestren ($args[
posts_per_page ] = 4; se mostrarn
4 productos) y el nmero de
columnas en los que se distribuirn
($args[ columns ] = 2; se mostrarn
2 productos en la primera fila y
otros 2 en la siguiente fila).

TE GUSTARA APRENDER MS ?
MIRA NUESTRO

NUEVO
CURSO
DE WOOCOMMERCE

PERO ESO TE LO CONTAMOS AQU

EBOOK REALIZADO POR:


ANTONIO CANTERO ( woodemia.com)
Montaje del pdf: ALEX MATEO (sisube.com)
FOTOGRAFIAS RECOPILADAS EN FREEPIK.ES

You might also like