El gestor de productos de WooCommerce, al igual que el de entradas y páginas de WordPress, permite mediante acciones en lote editar varios productos al mismo tiempo, para añadir descuentos, cambiar precios, y un montón de otras acciones en lote, entre las que se encuentra la posibilidad de añadir categorías a los productos seleccionados.
Es sencillo, solo tienes que ir a la pantalla de administración de productos, hacer clic en las casillas a la izquierda de los productos que quieres editar en lote y, en el desplegable superior de «Acciones en lote», elegir la opción de «Editar» y, a continuación, hacer clic en el botón de «Aplicar».
Como verás, puedes añadir categorías adicionales seleccionando desde la caja al efecto…
Perooooo…
No hay ninguna opción para borrar categorías existentes de los productos seleccionados, solo de añadirlas, algo realmente sorprendente, por su lógica utilidad, porque lo más normal es que cuando quieres añadir categorías, casi siempre, también querrás quitar al menos la categoría previa en muchas ocasiones.
Lo que podemos hacer para solucionarlo es crear una función que añada un desplegable en las acciones en lote de editar productos que nos permita borrar la categoría que elijamos quitar:
/* Selector de categoría a borrar en acciones en lote de editar productos */ add_action( 'woocommerce_product_bulk_edit_start', 'ayudawp_borrar_cat_lotes' ); function ayudawp_borrar_cat_lotes() { ?> <div class="inline-edit-group"> <label class="alignleft"> <span class="title">Borrar categoría</span> <span class="input-text-wrap"> <?php wc_product_dropdown_categories( [ 'class' => 'remove_product_cat', 'name' => 'remove_product_cat', 'show_option_none' => 'Selecciona la categoría de producto a borrar', 'value_field' => 'term_id' ] ); ?> </span> </label> </div> <?php } add_action( 'woocommerce_product_bulk_edit_save', 'ayudawp_borrar_cat_lotes_guardar', 9999 ); function ayudawp_borrar_cat_lotes_guardar( $product ) { $post_id = $product->get_id(); if ( isset( $_REQUEST['remove_product_cat'] ) ) { $cat_to_remove = $_REQUEST['remove_product_cat']; $categories = $product->get_category_ids(); if ( ! in_array( $cat_to_remove, $categories ) ) return; if ( ( $key = array_search( $cat_to_remove, $categories ) ) !== false ) { unset( $categories[$key] ); } $product->set_category_ids( $categories ); $product->save(); } }
El resultado es que al editar en lotes productos ahora tendrás un selector nuevo desde el que borrar la categoría que elijas.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!