Skip to content

Instantly share code, notes, and snippets.

@fburatti
Created September 30, 2022 11:03
Show Gist options
  • Save fburatti/fcc373827011709c8817d34a696003bb to your computer and use it in GitHub Desktop.
Save fburatti/fcc373827011709c8817d34a696003bb to your computer and use it in GitHub Desktop.
Bulk regenerate download permissions
<?php add_action( 'wp_ajax_ccom_regenerate', function() {
$offset = empty( $_POST['offset'] )
? 0 : intval( $_POST['offset'] );
$args = [
'status' => array('wc-completed'),
'type' => 'shop_order',
'limit' => 100,
'offset' => $offset,
];
$orders = wc_get_orders( $args );
if( ! $orders ) {
wp_die();
}
foreach( $orders as $order ) {
echo '.';
if( ! $order->has_downloadable_item() ) {
continue;
}
$data_store = WC_Data_Store::load( 'customer-download' );
$data_store->delete_by_order_id( $order->get_id() );
wc_downloadable_product_permissions( $order->get_id(), true );
}
wp_die();
} );
add_action( 'admin_notices', function() {
echo '
<div class="notice notice-info is-dismissible" id="ccom_regenerate">
<p>
<a href="#" id="ccom_regenerate_button">
Regenerate Download Permissions
</a>
</p>
</div>
';
} );
add_action( 'admin_enqueue_scripts', function() {
wp_enqueue_script( 'jquery' );
wp_add_inline_script( 'jquery', '
var ccom_regenerate_offset = 0;
jQuery( document ).ready( function( $ ) {
$( "#ccom_regenerate_button" ).click( function() {
ccom_regenerate( $ );
} );
} );
function ccom_regenerate( $ ) {
var data = {
"action": "ccom_regenerate",
"offset": ccom_regenerate_offset
};
$.post( ajaxurl, data, function( response ) {
// Handle EOF Or Error
if( response == "" ) { return; }
// Display Page Processed
$( "div#ccom_regenerate" )
.append( " [offset:" + ccom_regenerate_offset + "] " );
// Advance
ccom_regenerate_offset += 100;
ccom_regenerate( $ );
} );
}
', 'after' );
} );
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment