J'utilise WooCommerce et j'aimerais afficher les produits "en rupture de stock" en dernier dans la requête sur la page d'archives. Comment puis je faire ça?
Actuellement, nous faisons d’abord l’émission de produit la plus récente avec la requête personnalisée suivante:
add_action( 'pre_get_posts', 'mik_exclude_category' );
function mik_exclude_category( $query ) {
if ( $query->is_main_query() ) {
$query->set( 'orderby', 'date' );
$query->set( 'order', 'DESC' );
}
}
Donc, nous aimerions faire les deux. Affichez les produits les plus récents en premier, mais affichez les produits "en rupture de stock", quelle que soit leur nouveauté.
Cordialement, Mika
Si nous ne disposons que de deux statuts de stock, à savoir outofstock
et instock
, nous pouvons très facilement effectuer un tri avec pre_get_posts
add_action( 'pre_get_posts', function ( $q ) {
if ( !is_admin() // Target only front end
&& $q->is_main_query() // Only target the main query
&& $q->is_post_type_archive() // Change to suite your needs
) {
$q->set( 'meta_key', '_stock_status' );
$q->set( 'orderby', 'meta_value' );
$q->set( 'order', 'ASC' );
}
}, PHP_INT_MAX );
Vous devriez adapter cela à vos besoins