Ordenar por sku con woocommerce

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.

Angel Cruz's avatar
Autor
Angel Cruz