WooCommerce: ordenar productos por stock

Muchos no acabamos de entender cómo WooCommerce no deja ordenar por defecto los productos por stock.

Tutoriales WordPress en español

Para empezar, decir que no es sencillo. Debemos programar. Y segundo, debemos poner un contexto para entenderlo mejor.

Contexto

Tenemos en nuestro WooCommerce, productos ya vendidos y productos todavía en venta. Dejamos visible los vendidos por temas de facilitar el SEO y por otro lado, para mostrar qué vendemos.

Ahora bien, lo que queremos es que woocommerce muestre primero los que están en venta, y por último los que ya están vendidos. Esto facilitará al futuro cliente la compra de productos.

Requisitos para ordenar productos

Encontraréis multitud de código por internet. La mayoría muy parecido. Lo que nadie comenta, son los requisitos para que funcionen:

  • En todos los productos deberá estar marcada la opción de «Administrar stock» que lo encontraréis en el apartado de WooCommerce > Inventario de cada producto. Marcáis la opción y ponéis en cantidad 0 si el producto está vendido, y 1 si el producto está en venta.
  • Debemos marcar «Orden por defecto» en la opción de WooCommerce. Lo encontraréis en:
    • WordPress > Apariencia > Personalizar > WooCommerce > Catálogo productos > Escoger orden por defecto.
  • El código que veremos a continuació, ordena por «Status stock» y de forma Ascendente. No ordena por cantidad de stock, si no por el estado de inventario del producto: «InStock», «OutOfStock» o «OnBackOrder».

El código WooCommerce

Aquí tenéis el código que debéis añadir en el fichero functions.php de vuestra plantilla WordPress.

add_filter( 'woocommerce_get_catalog_ordering_args', 'trescomatres_ordenar_por_stock', 9999 );
 
function trescomatres_ordenar_por_stock( $args ) {
   $args['orderby'] = 'meta_value';
   $args['meta_key'] = '_stock_status';
   return $args;
}

Espero que os sea de utilidad este artículo y podáis en woocommerce, ordenar los productos segun su stock.

Más información