Justo hoy he resuelto un problema de un cliente que tiene que aplicar los nuevos canon digital, vigentes desde el 1 de julio, a todos sus productos. Se trata de una tienda con WooCommerce y tiene multitud de referencia de productos digitales, con canon digital, pero que varían en base a la categoría (no es lo mismo el canon de un smarthpone que de una memoria USB por ejemplo).
Como el canon es algo que va relacionado con la categoría, se guarda el importe del canon digital, que es unitario por cada producto, en un meta dato de la categoría de producto. Luego usando la API de fees, que no sé si la conocéis pero es aplicar comisiones y recargos ajenos a los productos en el carrito y en finalizar compra; se aplica la totalidad del canon de cada línea del carrito.
Pero me ha surgido un problema, los productos, en ocasiones aparecen en varias categorías y claro, es posible que se diera el caso que un mismo producto tuviera diferentes cánones en diferentes categorías. ¿Qué haríamos en este caso? Pues elegir la categoría más específica. ¿Cuál es la más específica? Pues la subcategoría de mayor nivel. De forma que si tenemos el siguiente árbol de categorías:
Buscaríamos el canon específico primero en Serie Redmi, luego en Xiaomi y luego en Smartphones. La primera categoría que tuviera un canon aplicado, sería la que se usaría.
¿Y cómo sé en WooCommerce dado un identificador de producto cuáles son sus categoría ordenadas de más específicas a menos específicas? Pues con esta función.
function obtener_categorias_producto_ordenadas_por_profundidad( $product_id ){
$terms = get_the_terms( $product_id, 'product_cat' );
if( empty( $terms ) )
return array();
$depths = array();
foreach ($terms as $term) {
$depths[$term->term_id] = count( get_ancestors( $term->term_id, 'product_cat' ) );
}
arsort( $depths );
$categories = array();
foreach ($depths as $term_id => $depth) {
$categories[] = $term_id;
}
return $categories;
} Y bueno os explico de palabra cómo funciona:
Seguro que os sirve en algún desarrollo que tengáis que realizar.
Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.El comercio electrónico español, que se encuentra en pleno crecimiento y transformación, vive actualmente un…
Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…
Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…
El desarrollo de plugins a medida WordPress resuelve pagos, reservas y flujos propios con integración…
El plugin RedSys WooCommerce conecta tu tienda con el banco, reduce errores de cobro y…
Aprende a resolver rechazo SIS en WordPress: identifica el código, revisa RedSys, pedidos y firmas…