#php #wordpress #woocommerce #hook-woocommerce #woocommerce-theming
Вопрос:
Я хочу инициировать действие save_post_shop_order массовыми действиями, потому что у меня есть пользовательская функция, которая создаст там мета-информацию о продукте.
Я попробовал что-то вроде:
// Adding to admin order list bulk dropdown a custom action 'update_all'
add_filter( 'bulk_actions-edit-shop_order', 'update_all_bulk_actions_edit_product', 20, 1 );
function update_all_bulk_actions_edit_product( $actions ) {
$actions['update_all'] = __( 'Update all orders', 'woocommerce' );
return $actions;
}
// Make the action from selected orders
add_filter( 'handle_bulk_actions-edit-shop_order', 'update_all_handle_bulk_action_edit_shop_order', 10, 3 );
function update_all_handle_bulk_action_edit_shop_order( $redirect_to, $action, $post_ids ) {
if ( $action !== 'update_all' )
return $redirect_to; // Exit
$processed_ids = array();
foreach ( $post_ids as $post_id ) {
$order = wc_get_order( $post_id );
$order_data = $order->get_data();
$order->save();
$processed_ids[] = $post_id;
}
return $redirect_to = add_query_arg( array(
'update_all' => $action,
'processed_count' => count( $processed_ids ),
'processed_ids' => implode( ',', $processed_ids ),
), $redirect_to );
}
// The results notice from bulk action on orders
add_action( 'admin_notices', 'update_all_bulk_action_admin_notice' );
function update_all_bulk_action_admin_notice() {
if ( empty( $_REQUEST['update_all'] ) ) return; // Exit
$count = intval( $_REQUEST['processed_count'] );
printf( '<div id="message" class="updated fade"><p>' .
_n( 'Processed %s Order for updates.',
'Processed %s Orders for updates.',
$count,
'update_all'
) . '</p></div>', $count );
}
К сожалению, это не работает.
Что я делаю не так?
Комментарии:
1. Я проверил ваш код и его работу. Это то, что я получаю update_all=update_allamp;processed_count=1amp;processed_ids=214 . Вы получаете какие-либо ошибки в своем журнале ?