Mostrar solo productos “en stock” en Woocommerce Código corto de productos recientes

2 minutos de lectura

avatar de usuario
elizabeth dibujó

necesito excluir Agotado los artículos se muestren cuando se usa el código abreviado de productos recientes de Woocommerce en mi página principal.

[recent_products]

¿Es posible crear una regla como hide_outofstock="true" o algo por el estilo para evitar que se muestren los productos agotados?

He rastreado la web en busca de ideas sobre cómo abordar este problema, y ​​​​no soy programador en absoluto, pero por lo general puedo hacer frankenstein para solucionar problemas como este. Sin embargo, ahora mismo estoy perplejo. Toda y cualquier ayuda será muy apreciada.

  • No puedo simplemente ocultar todos los productos agotados a través de la página de configuración de WooCommerce, ya que deben estar visibles en otras áreas del sitio.

  • El uso de un código que “oculta” en lugar de “no extrae” productos agotados solo muestra espacios vacíos donde se habrían mostrado los productos.

  • Debe funcionar de forma dinámica, ya que los niveles de existencias cambian con frecuencia. La restricción manual por ID de producto llevará demasiado tiempo.

avatar de usuario
LoicTheAztec

Actualización de junio de 2018 (para compatibilidad de tipo de producto)

Después de una pequeña búsqueda en WC_Shortcodes código fuente de la clase, esta es la forma correcta de hacerlo:

add_filter( 'woocommerce_shortcode_products_query', function( $query_args, $atts, $loop_name ){
    if( $loop_name == 'recent_products' ){
        $query_args['meta_query'] = array( array(
            'key'     => '_stock_status',
            'value'   => 'outofstock',
            'compare' => 'NOT LIKE',
        ) );
    }
    return $query_args;
}, 10, 3);

El código va en el archivo function.php de su tema secundario activo (o tema) o también en cualquier archivo de complemento.

Probado en WooCommerce 3+ y funciona.

  • ¡Funcionó brillantemente! Muchas gracias por su ayuda 🙂

    – Elizabeth Drew

    31 de agosto de 2017 a las 22:09

  • Funciona bien con WooCommerce 5.9.1, gracias 🙏

    – CBRPLX

    25 abr a las 15:44

Solo una pequeña actualización. El código anterior funcionó bien con productos simples, pero las variaciones con una variación en stock y otra variación fuera de stock no se mostraron al usar el [recent_products] Código corto. Creo que he arreglado esto cambiando el valor a agotado y comparándolo con NO ME GUSTA.

add_filter( 'woocommerce_shortcode_products_query', function( $query_args, $atts, $loop_name ){
    if( $loop_name == 'recent_products' ){
        $query_args['meta_query'] = array( array(
            'key'     => '_stock_status',
            'value'   => 'outofstock',
            'compare' => 'NOT LIKE',
        ) );
    }
    return $query_args;
}, 10, 3);

Agregue el siguiente código en su tema functions.php expediente,

function custom_woocommerce_shortcode_products_query( $args ) {
   if ( 'yes' == get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
     $args['meta_query'][] = array(
       'key' => '_stock_status',
       'value' => 'instock',
       'compare' => 'IN'
     );
   }
   return $args;
}

add_filter( 'woocommerce_shortcode_products_query', 'custom_woocommerce_shortcode_products_query' );

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad