Guest User

delete woocommerce orders functions php

a guest
Oct 23rd, 2023
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.37 KB | Software | 0 0
  1. function eliminar_pedidos_ajax() {
  2.     // Comprobar si el usuario es administrador
  3.     if ( ! current_user_can( 'manage_options' ) ) {
  4.         wp_send_json_error( 'No estás autorizado para hacer esto.' );
  5.     }
  6.  
  7.     // Comprobar el nonce
  8.     check_ajax_referer( 'eliminar_pedidos_nonce', 'nonce' );
  9.  
  10.     // Obtener pedidos en lotes de 50
  11.     $orders = get_posts( array(
  12.         'numberposts' => 50,
  13.         'post_type'   => 'shop_order',
  14.         'post_status' => array_keys( wc_get_order_statuses() )
  15.     ) );
  16.  
  17.     if ( empty( $orders ) ) {
  18.         wp_send_json_success( 'Todos los pedidos han sido eliminados.' );
  19.     }
  20.  
  21.     foreach( $orders as $order ) {
  22.         wp_delete_post( $order->ID, true );
  23.     }
  24.  
  25.     wp_send_json_error( 'Se eliminaron 50 pedidos. Continuando...' );
  26. }
  27. add_action( 'wp_ajax_eliminar_pedidos', 'eliminar_pedidos_ajax' );
  28.  
  29. function agregar_eliminar_pedidos_js() {
  30.     // Comprobar si el usuario es administrador y si estamos en el backoffice con el parámetro ?delete
  31.     if ( is_admin() && isset($_GET['delete']) ) {
  32.         ?>
  33.        
  34.             jQuery(document).ready(function($) {
  35.                 var r = confirm("¿Estás seguro de que quieres comenzar a eliminar los pedidos en lotes?");
  36.                 if (r == true) {
  37.                     function eliminarLotePedidos() {
  38.                         $.ajax({
  39.                             url: ajaxurl,
  40.                             type: 'POST',
  41.                             data: {
  42.                                 action: 'eliminar_pedidos',
  43.                                 nonce: '<?php echo wp_create_nonce( "eliminar_pedidos_nonce" ); ?>'
  44.                             },
  45.                             success: function(response) {
  46.                                 if (response.success) {
  47.                                     alert(response.data);
  48.                                 } else {
  49.                                     eliminarLotePedidos();
  50.                                 }
  51.                             },
  52.                             error: function() {
  53.                                 alert('Error al intentar eliminar los pedidos.');
  54.                             }
  55.                         });
  56.                     }
  57.                     eliminarLotePedidos();
  58.                 }
  59.             });
  60.        
  61.         <?php
  62.     }
  63. }
  64. add_action( 'admin_footer', 'agregar_eliminar_pedidos_js' );
Advertisement
Add Comment
Please, Sign In to add comment