Snippet Woo

Descripción
1. Ocultar el recuento de productos de categoría en los archivos de productos. 2. Sobreescribe el loop template y muestra seleccionar el número de dicho producto a elegir, próxima al botón "Añadir al Carrito" Tiene que estar activo el botón "Añadir al carrito" 3. Excluir productos de una categoría en particular en la página de la tienda. Tenga en cuenta que esto solo funcionará cuando tenga la opción 'Mostrar página de la tienda' configurada en 'Mostrar productos' en la configuración del catálogo de productos WooCommerce de sus Personalizadores. 4. Excluir productos de una categoría concreta en la página de la tienda. 5. Eliminar el contenido del producto según la categoría. 6. configuración inicio. 7. Ocultar ceros finales en los precios. 8. Este código le permite desenganchar y eliminar los correos electrónicos predeterminados de WooCommerce. 9. Utilice el siguiente código para cambiar la cantidad de productos WooCommerce que se muestran por página. 10. Define dónde se aplican las clases 'primera' y 'última' en los archivos de productos. 11. Cambiar el número de productos por fila a por ej. 3. 12. Loop de productos simples. 13. Mostrar contenido del carrito / total. Para mostrar el contenido del carrito y el total en su plantilla. 14. Cambiar el número de salida de productos relacionados. 15. Cambiar el texto del botón añadir al carrito. 16. numero de colummnas de productos. Código

 

<?php
// ---- Ocultar el recuento de productos de subcategorías en los archivos de productos ----
/**
 * Ocultar el recuento de productos de categoría en los archivos de productos
 */
add_filter( 'woocommerce_subcategory_count_html', '__return_false' );

/**
 * Sobreescribe el loop template y muestra seleccionar el número de dicho producto a elegir, próxima al botón "Añadir al Carrito" 
 Tiene que estar activo el botón "Añadir al carrito"
 */
add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_woocommerce_loop_add_to_cart_link', 10, 2 );
function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) {
    if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
        $html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
        $html .= woocommerce_quantity_input( array(), $product, false );
        $html .= '<button type="submit" class="button alt">' . esc_html( $product->add_to_cart_text() ) . '</button>';
        $html .= '</form>';
    }
    return $html;
}

/* Excluir productos de una categoría en particular en la página de la tienda.
Tenga en cuenta que esto solo funcionará cuando tenga la opción 'Mostrar página de la tienda' configurada en 'Mostrar productos' en la configuración del catálogo de productos WooCommerce de sus Personalizadores.
*/
/**
 * Exclude products from a particular category on the shop page
 */
function custom_pre_get_posts_query( $q ) {

    $tax_query = (array) $q->get( 'tax_query' );

    $tax_query[] = array(
           'taxonomy' => 'product_cat',
           'field' => 'slug',
           'terms' => array( 'clothing' ), // Don't display products in the clothing category on the shop page.
           'operator' => 'NOT IN'
    );


    $q->set( 'tax_query', $tax_query );

}
add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );  

// Eliminar el contenido del producto según la categoría
/**
 * Remove product content based on category
 */
add_action( 'wp', 'remove_product_content' );
function remove_product_content() {
    // If a product in the 'Cookware' category is being viewed…
    if ( is_product() && has_term( 'Cookware', 'product_cat' ) ) {
        //… Remove the images
        remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );
        // For a full list of what can be removed please see woocommerce-hooks.php
    }
}

// configuración inicio
function mytheme_add_woocommerce_support() {
    add_theme_support( 'woocommerce', array(
        'thumbnail_image_width' => 150,
        'single_image_width'    => 300,
        'product_grid'          => array(
            'default_rows'    => 3,
            'min_rows'        => 2,
            'max_rows'        => 8,
            'default_columns' => 4,
            'min_columns'     => 2,
            'max_columns'     => 5,
        ),
    ) );
}

add_action( 'after_setup_theme', 'mytheme_add_woocommerce_support' );

// Ocultar ceros finales en los precios
/*
Si desea ocultar los ceros finales en sus precios, agregue el siguiente código al archivo functions.php de su tema. Después de hacer esto, sus precios no mostrarán los ceros finales.
*/
/**
 * Trim zeros in price decimals
 **/
 add_filter( 'woocommerce_price_trim_zeros', '__return_true' );

// Este código le permite desenganchar y eliminar los correos electrónicos predeterminados de WooCommerce.
/**
 * Unhook and remove WooCommerce default emails.
 */
add_action( 'woocommerce_email', 'unhook_those_pesky_emails' );

function unhook_those_pesky_emails( $email_class ) {

        /**
         * Hooks for sending emails during store events
         **/
        remove_action( 'woocommerce_low_stock_notification', array( $email_class, 'low_stock' ) );
        remove_action( 'woocommerce_no_stock_notification', array( $email_class, 'no_stock' ) );
        remove_action( 'woocommerce_product_on_backorder_notification', array( $email_class, 'backorder' ) );
        
        // New order emails
        remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
        remove_action( 'woocommerce_order_status_pending_to_completed_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
        remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
        remove_action( 'woocommerce_order_status_failed_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
        remove_action( 'woocommerce_order_status_failed_to_completed_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
        remove_action( 'woocommerce_order_status_failed_to_on-hold_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
        
        // Processing order emails
        remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
        remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
        
        // Completed order emails
        remove_action( 'woocommerce_order_status_completed_notification', array( $email_class->emails['WC_Email_Customer_Completed_Order'], 'trigger' ) );
            
        // Note emails
        remove_action( 'woocommerce_new_customer_note_notification', array( $email_class->emails['WC_Email_Customer_Note'], 'trigger' ) );
}

/*
Utilice el siguiente código para cambiar la cantidad de productos WooCommerce que se muestran por página.

Esto requiere que se muestre la página de su tienda, que se puede encontrar en la vista del personalizador en el catálogo de productos de WooCommerce configurado en 'Mostrar productos'
*/
/**
 * Change number of products that are displayed per page (shop page)
 */
add_filter( 'loop_shop_per_page', 'new_loop_shop_per_page', 20 );

function new_loop_shop_per_page( $cols ) {
  // $cols contains the current number of products per page based on the value stored on Options –> Reading
  // Return the number of products you wanna show per page.
  $cols = 9;
  return $cols;
}

/*
Define dónde se aplican las clases 'primera' y 'última' en los archivos de productos.

Tenga en cuenta que algunos temas de terceros pueden estar codificados de manera que los fragmentos a continuación no tengan ningún efecto en el diseño. En este caso, le recomendamos que se ponga en contacto con el autor del tema.

Tema personalizado
Si está creando un tema, puede resultar útil que otros desarrolladores puedan conectarlo. Cuando se incluya en su tema, otros desarrolladores podrán personalizar esta función.
*/
/**
 * Change number or products per row to 3
 */
add_filter('loop_shop_columns', 'loop_columns', 999);
if (!function_exists('loop_columns')) {
    function loop_columns() {
        return 3; // 3 products per row
    }
}

// Sample products loop
?><ul class="products">
    <?php
        $args = array(
            'post_type' => 'product',
            'posts_per_page' => 12
            );
        $loop = new WP_Query( $args );
        if ( $loop->have_posts() ) {
            while ( $loop->have_posts() ) : $loop->the_post();
                wc_get_template_part( 'content', 'product' );
            endwhile;
        } else {
            echo __( 'No products found' );
        }
        wp_reset_postdata();
    ?>
</ul><!–/.products–><?php

// Mostrar contenido del carrito / total. Para mostrar el contenido del carrito y el total en su plantilla, use algo como:
// Use in conjunction with https://gist.github.com/woogists/c0a86397015b88f4ca722782a724ff6c

?><a class="cart-customlocation" href="<?php echo wc_get_cart_url(); ?>" title="<?php _e( 'Ver su carrito de compras' ); ?>"><?php echo sprintf ( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count() ), WC()->cart->get_cart_contents_count() ); ?> – <?php echo WC()->cart->get_cart_total(); ?></a><?php

// Cambiar el número de salida de productos relacionados. Tenga en cuenta que no funciona para todos los temas debido a la forma en que están codificados.
/**
 * Change number of related products output
 */ 
function woo_related_products_limit() {
  global $product;
    
    $args['posts_per_page'] = 6;
    return $args;
}
add_filter( 'woocommerce_output_related_products_args', 'jk_related_products_args', 20 );
  function jk_related_products_args( $args ) {
    $args['posts_per_page'] = 4; // 4 related products
    $args['columns'] = 2; // arranged in 2 columns
    return $args;
}

/* Cambiar el texto del botón añadir al carrito.
Este complemento gratuito le permite cambiar las etiquetas de 'agregar al carrito' en todas las páginas de productos individuales (por tipo de producto) y también en la página de archivo / tienda (por tipo de producto): Etiquetas personalizadas de WC para agregar al carrito
*/

// numero de colummnas de productos
add_filter( 'storefront_featured_products_shortcode_args', 'bbloomer_storefront_featured_product_per_row' );
 
function bbloomer_storefront_featured_product_per_row( $args ) {
   $args['columns'] = 2;
   return $args;
}
?>