A vegades tenim un lloc web amb milers de productes, alguns d’ells sense estoc. Si volem mostrar aleatòriament productes en la nostra pàgina principal, però sense que apareguen els que no tenen stock, inclourem aquest codi al nostre functions.php:
//NO MOSTRAMOS productos sin stock en la home page
add_filter( 'woocommerce_product_query_meta_query', 'stockForaHome', 10, 2 );
function stockForaHome( $meta_query, $query ) {
// Si es la página principal
if( is_front_page() ){
// Excluimos productos fuera de stock
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!=',
);
}
return $meta_query;
}
També podem utilitzar aquest codi per a mostrar al final de tot, els productes sense stock en les categoríes-arxius-tags de productes:
//Productges sense stock al final
add_filter('posts_clauses', 'sin_stock_al_final_woocommerce');
function sin_stock_al_final_woocommerce($posts_clauses) {
global $wpdb;
// Solo cambiar la consulta en los bucles de WooCommerce
if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy())) {
$posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) ";
$posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby'];
$posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where'];
}
return $posts_clauses;
}