Ordenar por sku con woocommerce

Angel Cruz
Angel Cruz
Tabla de contenidos

Recientemente he tenido la necesidad de agregar un filtro adicional a la hora de ordenar el listado de productos usando woocommerce, haciendo una búsqueda por papá Google encontré un gist en github que resolvió el requerimiento.

Algunas veces es necesario agregar funcionalidades adicionales a los proyectos porque así lo requiere el modelo de negocio de nuestro proyecto.

Este es el caso de ordenar por sku los productos de una tienda con woocommerce

Que es sku

Stock-keeping unit o SKU, sin traducción literal al español podría denominarse «código de artículo» o «número de referencia». Asignado a un elemento para poder identificarlo en el inventario físico y/o financiero. El SKU representa para una empresa la unidad mínima de un producto que puede ser vendida, comprada, o gestionada al inventario. Aplicada a la distribución o producción, el SKU se puede utilizar para seguir transacciones y movimientos de inventario, analizar patrones de compra-venta, seguimiento de precios y fluctuaciones en el inventario.

https://es.wikipedia.org/wiki/Stock-keeping_unit

Una de las cosas super interesantes que posee wordpress es el uso de filtros para poder agregar o cambiar una funcionalidad de algo.

En esta oportunidad, lo que necesitaba hacer era agregar una funcionalidad extra a woocommerce_defaultcatalog_orderby

1 
2/**
3* Adds the ability to sort products in the shop based on the SKU
4* Can be combined with tips here to display the SKU on the shop page: https://www.skyverge.com/blog/add-information-to-woocommerce-shop-page/
5*
6* @param array $args the sorting args
7* @return array updated args
8*/
9 
10function svaddsku_sorting( $args ) {
11 
12 $orderbyvalue = isset( $GET['orderby'] ) ? wcclean( $GET['orderby'] ) : applyfilters( 'woocommercedefaultcatalogorderby', getoption( 'woocommercedefaultcatalogorderby' ) );
13 
14 if ( 'sku' == $orderby_value ) {
15 $args['orderby'] = 'meta_value';
16 $args['order'] = 'asc'; // lists SKUs alphabetically 0-9, a-z; change to desc for reverse alphabetical
17 $args['metakey'] = 'sku';
18 }
19 return $args;
20}
21 
22addfilter( 'woocommercegetcatalogorderingargs', 'svaddskusorting' );
23 
24/**
25* Add the option to the orderby dropdown.
26*
27* @param array $sortby the sortby options
28* @return array updated sortby
29*/
30 
31function svskusorting_orderby( $sortby ) {
32 // Change text above as desired; this shows in the sorting dropdown
33 $sortby['sku'] = __( 'Sort by SKU', 'textdomain' );
34 return $sortby;
35}
36 
37addfilter( 'woocommercecatalogorderby', 'svskusortingorderby' );
38addfilter( 'woocommercedefaultcatalogorderbyoptions', 'svskusortingorderby' );

Hagan clic aquí para ver el script original.

Te podrá interesar
Cursor anunció un ajuste en sus precios a partir del 15 de septiembre de 2025. Descubre cómo afectará a los usuarios, por qué ocurre este cambio y qué alternativas existen.
GitHub no cierra, pero ya no será lo mismo. Con la salida de Thomas Dohmke como CEO y la decisión de Microsoft de no reemplazarlo, la plataforma dejará de operar como entidad independiente y pasará a formar parte del equipo CoreAI, liderado por Jay Parikh.
Aprende cómo crear reglas personalizadas en Cursor IDE paso a paso. Incluye ejemplos, mejores prácticas y un generador de reglas online para facilitar el proceso.
Logo de Angel Cruz

Made with ♥️ & 🧉 in Montevideo, Uruguay Buenos Aires, Argentina.

[AC].dev is not affiliated with Laravel or Laravel LLC. Laravel is a Trademark of Taylor Otwell.

Code highlighting provided by Torchlight.