Skip to content

Instantly share code, notes, and snippets.

@acanza
acanza / show-num-of-users-are-viewing-products.php
Created June 2, 2017 07:01
Muestra un mensaje con el número de usuarios que están viendo un producto es esos momentos
// Muestra un mensaje con el número de usuarios que están viendo un producto es esos momentos.
add_action( 'woocommerce_single_product_summary', 'show_num_of_users_are_viewing_products', 25 );
function show_num_of_users_are_viewing_products(){
global $post;
$list_of_products = array( 92, 95, 83 ); // Indica aquí los IDs de los productos donde quieras mostrar el mensaje (separados por coma). Si vas a mostrarlo en todos los productos, entonces no hagas nada.
$num_of_users = rand( 1, 10 );
if ( empty( $list_of_products ) || in_array( $post->ID , $list_of_products ) ) {
?>
@acanza
acanza / add-ga-tracking-code.php
Created April 7, 2017 07:19
Inserta el código de seguimiento de Google Analytics en todas las páginas del sitio
add_action( 'wp_head', 'add_ga_tracking_code' );
function add_ga_tracking_code(){
?>
<!-- Pega tu código de Analytics aquí -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
@acanza
acanza / mostrar-solo-envio-gratis.php
Created December 5, 2016 11:58
Oculta resto de métodos de envío cuando envío gratuito está disponible WC >= 2.6
//* 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 ) {
$new_rates = $rates;
if ( isset( $rates ) ) {
foreach ( $rates as $key => $value ) {
if ( $value->method_id == 'free_shipping' ) {
@acanza
acanza / show-payment-gateways-based-on-products-categories.php
Created December 1, 2016 17:43
Muestra determinados métodos de pago en función de la categoría del producto
// Muestra determinados métodos de pago en función de la categoría del producto
add_filter( 'woocommerce_available_payment_gateways', 'show_payment_gateways_based_on_products_categories', 1, 1 );
function show_payment_gateways_based_on_products_categories( $methods ){
$new_methods = $methods;
$products_categories_list = array( '' ); //---- Aquí debes introducir el listado de slugs de categorías de productos separados por coma.
$payment_gateways_list = array( '' ); //---- Aquí debes introducir el listado de IDs de métodos de pago permitidos para estos productos, por ejemplo; array( 'paypal', 'cod' )
$cart_content = WC()->cart->cart_contents;
@acanza
acanza / show-payment-gateways-based-on-products.php
Last active November 30, 2016 18:23
Muestra determinados métodos de pago en función del producto que haya en el carro
// Muestra determinados métodos de pago en función del producto que haya en el carro
add_filter( 'woocommerce_available_payment_gateways', 'show_payment_gateways_based_on_products', 1, 1 );
function show_payment_gateways_based_on_products( $methods ){
$new_methods = $methods;
$product_list = array( ); //---- Aquí debes introducir el listado de IDs de productos, por ejemplo; array( 95, 112, 114 )
$payment_gateways_list = array( ); //---- Aquí debes introducir el listado de IDs de métodos de pago permitidos para estos productos, por ejemplo; array( 'paypal', 'cod' )
$cart_content = WC()->cart->cart_contents;
@acanza
acanza / fb-pixel-purchases-traking.php
Last active January 29, 2018 10:01
Inserta el pixel de Facebook + evento de conversión de compra
// Inserta el pixel de Facebook en todas las páginas y añade el evento de conversión de compra para medir las compras finalizadas
if ( in_array( 'woocommerce/woocommerce.php', get_option( 'active_plugins' ) ) && version_compare( WC()->version , '3.0.0', '>' ) ){
add_action( 'wp_head', 'fb_pixel_purchases_traking' );
function fb_pixel_purchases_traking() {
$fb_pixel_id = '<FB_PIXEL_ID>'; // Debes reemplazar el texto <FB_PIXEL_ID> por tu código identificador del pixel manteniendo las comillas
ob_start()
?>
<!-- Start FB Tracking -->
@acanza
acanza / wc_disable_cod_gateway_by_cart_total_amount
Last active June 7, 2017 17:43
Deshabilita la opción de pago contra-reembolso cuando el pedido supera los 100€
// Deshabilita la opción de pago contra-reembolso cuando el pedido supera los X€
add_filter( 'woocommerce_available_payment_gateways', 'disable_cod_gateway_by_cart_total_amount', 1 );
function disable_cod_gateway_by_cart_total_amount( $gateways ){
$total_amount = 100; // Indica aquí el coste del carrito a partir del cual se deshabilita el pago contra-reembolso
if( ( WC()->cart->total > $total_amount ) && ( array_key_exists( 'cod', $gateways ) ) ) {
unset( $gateways[ 'cod' ] );
}
return $gateways;
@acanza
acanza / shortcode-add-to-cart-button.txt
Created July 14, 2016 09:04
Shortcode de WooCommerce para insertar botón de añadir al carro
[add_to_cart id="ID_del_producto" style="text-align:center;" show_price="false"]
@acanza
acanza / allow-only-the-last-product-added.php
Last active November 14, 2016 12:35
Limpia el carro y solo deja el último producto añadido
// Limpia el carro y solo muestra el último producto añadido
add_action( 'woocommerce_before_checkout_form', 'allow_only_the_last_product_added' );
function allow_only_the_last_product_added() {
// Remove all products except the lastone
if ( WC()->cart->get_cart_contents_count() > 1 ) {
// Get the key of the last product added
$cart_content = WC()->cart->get_cart();
$lastone_key = key( array_slice( $cart_content, -1, 1, TRUE ) );
@acanza
acanza / woo-archive-custom-cart-button-text.php
Created June 21, 2016 15:37
Avisa si un producto ya está en el carro
/**
* Cambia el texto del botón añadir al carro en la página del producto
*/
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 __('Ya está en el carro - ¿Añadir otro?', 'woocommerce');