Jednou z poměrně obtěžujících věcí u WooCommerce, je nutnost neustále něco rozklikávat. Naštěstí je možné využít hromadné akce v adminu WooCommerce.

Do roletky pro hromadné akce lze přidat další položku pomocí kódu:
add_filter( 'bulk_actions-edit-product', 'musilda_product_bulk_actions', 20, 1 );
function musilda_product_bulk_actions( $actions ) {
$actions['set-outofstock'] = __( 'Produkt není skladem', 'musilda' );
return $actions;
}
Tento filtr vám umožní rozšířit volbu hromadných akcí, já jsem jako příklad použil nastavení stavu skladu produktu.

Výhoda hromadné akce je v tom že si zaškrtnete, které produkty chcete upravit:

Po zaškrtnutí a kliknutí na použít, se provede funkce, která je zaregistrovaná do hooku handle_bulk_actions-edit-product:
add_filter( 'handle_bulk_actions-edit-product', 'musilda_handle_product_bulk_actions', 10, 3 );
function musilda_handle_product_bulk_actions( $redirect_to, $action, $post_ids ) {
if ( $action !== 'set-outofstock' ) {
return $redirect_to;
}
foreach ( $post_ids as $post_id ) {
$product = wc_get_product( $post_id );
if ( !empty( $product ) && is_object( $product ) ) {
$product->set_stock_status( 'outofstock' );
$product->save();
}
}
return $redirect_to;
}
Jak můžete vidět, funkce přijme id akce a pole produktů, které jsou označené. Následně si vyvoláme objekt každého produktu, nastavíme stav skladu a uložíme.
Výsledek:

Tento postup vám tak umožňuje hromadně pracovat s produkty z výpisu. Není třeba pro nějaké nastavení chodit do detailu produktu.
Také si můžete napsat funkci, jenž vám rozšíří funkčnost e-shopu. Naposledy jsem tento postup použil při exportu stavu skladu do csv pro skladový program.