Última actividad 1713289486

Malin revisó este gist 1713289486. Ir a la revisión

1 file changed, 38 insertions

move-out-of-stock.php(archivo creado)

@@ -0,0 +1,38 @@
1 + // move out of stock products to end of loop in WooCommerce Archives
2 +
3 + add_action( 'woocommerce_product_query', 'custom_woocommerce_product_query' );
4 + function custom_woocommerce_product_query( $q ) {
5 + // Get any existing meta query from the query
6 + $meta_query = $q->get('meta_query');
7 +
8 + // Add our condition
9 + $stock_status_meta_query = array(
10 + 'relation' => 'OR',
11 + array(
12 + 'key' => '_stock_status',
13 + 'value' => 'instock',
14 + 'compare' => '=',
15 + ),
16 + array(
17 + 'key' => '_stock_status',
18 + 'compare' => 'NOT EXISTS', // This ensures compatibility with variations
19 + ),
20 + );
21 +
22 + // If there's already a meta_query, we add ours to it. If not, we create a new one.
23 + if (!empty($meta_query)) {
24 + $meta_query[] = $stock_status_meta_query;
25 + } else {
26 + $meta_query = array($stock_status_meta_query);
27 + }
28 +
29 + // Set the modified meta query back
30 + $q->set('meta_query', $meta_query);
31 +
32 + // Order by stock status first
33 + $q->set('orderby', array('meta_value' => 'ASC', 'date' => 'DESC'));
34 +
35 + // This ensures out-of-stock products are listed last
36 + $q->set('meta_key', '_stock_status');
37 + $q->set('order', 'ASC');
38 + }
Siguiente Anterior