Ordenar por sku con woocommerce

Angel Cruz
Angel Cruz

05 DE diciembre DE 2019

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
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.
Descubre qué es MCP (Model Context Protocol), cómo funciona y por qué se ha convertido en una herramienta esencial para construir agentes inteligentes conectados, seguros y escalables.
¿Vale la pena testear modelos en Laravel? Descubre cuándo es útil, mejores prácticas y errores comunes al hacerlo.

Made with ♥️ & 🧉 in Montevideo, Uruguay.

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

Code highlighting provided by Torchlight.

We use cookies!

Hi, this website uses essential cookies to ensure its proper operation and tracking cookies to understand how you interact with it.