Сохранение триггерного заказа WooCommerce с помощью массовых действий

#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 . Вы получаете какие-либо ошибки в своем журнале ?