---
title: "Ordenar por sku con woocommerce"
excerpt: "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."
date: "2019-12-05T16:42:40.000Z"
category: "WordPress"
seo_title: "Ordenar productos por SKU en WooCommerce con un filtro PHP"
seo_description: "Agrega la opción de ordenar productos por SKU en WooCommerce usando los filtros woocommerce_get_catalog_ordering_args y woocommerce_catalog_orderby. Solución en menos de 20 líneas de PHP."
author:
  name: "angel cruz"
  picture: "https://angelcruzdevcdn.nyc3.cdn.digitaloceanspaces.com/images/me/angel-cruz.png"
---

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`

```php

/**
* Adds the ability to sort products in the shop based on the SKU
* 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/
*
* @param array $args the sorting args
* @return array updated args
*/

function svaddsku_sorting( $args ) {

	$orderbyvalue = isset( $GET['orderby'] ) ? wcclean( $GET['orderby'] ) : applyfilters( 'woocommercedefaultcatalogorderby', getoption( 'woocommercedefaultcatalogorderby' ) );

	if ( 'sku' == $orderby_value ) {
		$args['orderby'] = 'meta_value';
		$args['order'] = 'asc'; // lists SKUs alphabetically 0-9, a-z; change to desc for reverse alphabetical
		$args['metakey'] = 'sku';
	}
	return $args;
}

addfilter( 'woocommercegetcatalogorderingargs', 'svaddskusorting' );

/**
* Add the option to the orderby dropdown.
*
* @param array $sortby the sortby options
* @return array updated sortby
*/

function svskusorting_orderby( $sortby ) {
	// Change text above as desired; this shows in the sorting dropdown
	$sortby['sku'] = __( 'Sort by SKU', 'textdomain' );
	return $sortby;
}

addfilter( 'woocommercecatalogorderby', 'svskusortingorderby' );
addfilter( 'woocommercedefaultcatalogorderbyoptions', 'svskusortingorderby' );
```

Hagan clic [aquí](https://gist.github.com/bekarice/1883b7e678ec89cc8f4d#file-wc-sku-sorting-php) para ver el script original.

---

## Sitemap

Índice completo del sitio: [/sitemap.md](https://angelcruz.dev/sitemap.md)

Canónico HTML: [https://angelcruz.dev/post/ordenar-por-sku-con-woocommerce](https://angelcruz.dev/post/ordenar-por-sku-con-woocommerce)
