mirror of
https://gh.wpcy.net/https://github.com/mainwp/Code-Snippets-Functions.git
synced 2026-05-02 12:02:25 +08:00
https://github.com/easydigitaldownloads/library/blob/master/_admin/bulk-delete-orders.html
204 lines
7.3 KiB
Text
204 lines
7.3 KiB
Text
function emod_show_menu() {
|
|
global $wpdb;
|
|
?>
|
|
<style>
|
|
.widefat td {
|
|
vertical-align: top;
|
|
margin-top: 0px;
|
|
padding-top: 0px;
|
|
}
|
|
.wrap h4, .widefat th {
|
|
padding-top: 0px;
|
|
margin-top: 0px;
|
|
}
|
|
</style>
|
|
<div class="wrap">
|
|
<h2 style="display: run-in;"><?php _e( 'EDD Mass Order Deletion', 'edd' );?></h2><p><?php _e( 'The plugin allows one to mass delete EDD orders. Use with caution.', 'edd' );?></p>
|
|
<table class="form-table" style="margin-top: .5em" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<form method="post">
|
|
<table class="widefat" style="padding: 10px;">
|
|
<tr valign="top">
|
|
<th align="left"><?php _e( 'Delete all orders', 'edd' );?></th>
|
|
<td style="width: 40%;">
|
|
<h4><?php _e( 'Between (inclusive)', 'edd' );?></h4>
|
|
<?php _e( 'Start Year (XXXX format):', 'edd' );?> <input type="text" name="startyear" value="" size="10"> <br />
|
|
<?php _e( 'Start Month (XX format):', 'edd' );?> <input type="text" name="startmonth" value="" size="10"> <br />
|
|
<?php _e( 'Start Day (XX format):', 'edd' );?> <input type="text" name="startday" value="" size="10"> <br />
|
|
<?php _e( 'End Year (XXXX format):', 'edd' );?> <input type="text" name="endyear" value="" size="10"> <br />
|
|
<?php _e( 'End Month (XX format):', 'edd' );?> <input type="text" name="endmonth" value="" size="10"> <br />
|
|
<?php _e( 'End Day (XX format):', 'edd' );?> <input type="text" name="endday" value="" size="10">
|
|
</td>
|
|
<td style="width: 30%;">
|
|
<h4><?php _e( 'Older Than (inclusive)', 'edd' );?></h4>
|
|
<?php _e( 'Year (XXXX format):', 'edd' );?> <input type="text" name="year" value="" size="10"><br />
|
|
<?php _e( 'Month (XX format):', 'edd' );?><input type="text" name="month" value="" size="10"><br />
|
|
<?php _e( 'Day (XX format):', 'edd' );?> <input type="text" name="day" value="" size="10">
|
|
</td>
|
|
<td style="width: 30%;">
|
|
<h4><?php _e( 'Newer Than (inclusive)', 'edd' );?></h4>
|
|
<?php _e( 'Year (XXXX format):', 'edd' );?> <input type="text" name="newyear" value="" size="10"> <br />
|
|
<?php _e( 'Month (XX format):', 'edd' );?> <input type="text" name="newmonth" value="" size="10"> <br />
|
|
<?php _e( 'Day (XX format):', 'edd' );?> <input type="text" name="newday" value="" size="10">
|
|
</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th align="left"><?php _e( 'Order Status(es)', 'edd' );?></th>
|
|
<td align="left">
|
|
<input type="checkbox" name="publish" > <?php _e( 'Published/Completed', 'edd' );?> <br />
|
|
<input type="checkbox" name="pending" > <?php _e( 'Pending', 'edd' );?> <br />
|
|
<input type="checkbox" name="refunded" > <?php _e( 'Refunded', 'edd' );?> <br />
|
|
<input type="checkbox" name="failed" > <?php _e( 'Failed', 'edd' );?> <br />
|
|
<input type="checkbox" name="revoked" > <?php _e( 'Revoked', 'edd' );?> <br />
|
|
<input type="checkbox" name="cancelled" > <?php _e( 'Cancelled', 'edd' );?> <br />
|
|
<input type="checkbox" name="abandoned" > <?php _e( 'Abandoned', 'edd' );?>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th align="left"><?php _e( 'Bypass trash', 'edd' );?></th>
|
|
<td align="left"><input type="checkbox" name="force_delete" checked> -
|
|
<?php _e( 'If checked, orders will be permanently deleted.', 'edd' );?>
|
|
|
|
</tr>
|
|
<tr valign="top">
|
|
<th align="left"><?php _e( 'Delete associated log entries', 'edd' );?></th>
|
|
<td align="left"><input type="checkbox" name="delete_logs" checked>
|
|
</tr>
|
|
</table>
|
|
<br />
|
|
<div align="center">
|
|
<input type="submit" name="delete" class="button-primary"
|
|
value="<?php _e( 'Delete Orders', 'edd' );?>" />
|
|
</div>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<?php
|
|
if ( isset( $_POST[ 'delete' ] ) ) {
|
|
$type = array();
|
|
$status = array();
|
|
if ( isset( $_POST[ 'publish' ] ) && $_POST[ 'publish' ] == "on" ) {
|
|
$status[] = "publish";
|
|
$status[] = "complete";
|
|
}
|
|
if ( isset( $_POST[ 'pending' ] ) && $_POST[ 'pending' ] == "on" ) {
|
|
$status[] = "pending";
|
|
}
|
|
if ( isset( $_POST[ 'failed' ] ) && $_POST[ 'failed' ] == "on" ) {
|
|
$status[] = "failed";
|
|
}
|
|
if ( isset( $_POST[ 'revoked' ] ) && $_POST[ 'revoked' ] == "on" ) {
|
|
$status[] = "revoked";
|
|
}
|
|
if ( isset( $_POST[ 'cancelled' ] ) && $_POST[ 'cancelled' ] == "on" ) {
|
|
$status[] = "cancelled";
|
|
}
|
|
if ( isset( $_POST[ 'abandoned' ] ) && $_POST[ 'abandoned' ] == "on" ) {
|
|
$status[] = "abandoned";
|
|
}
|
|
$mode = 1;
|
|
if ( isset( $_POST[ 'newyear' ] ) && !empty( $_POST[ 'newyear' ] ) ) {
|
|
$mode = 2;
|
|
}
|
|
if ( isset( $_POST[ 'startyear' ] ) && !empty( $_POST[ 'startyear' ] ) ) {
|
|
$mode = 3;
|
|
}
|
|
@set_time_limit( 60 * 30 );
|
|
if ( $mode === 1 ) {
|
|
$args = array(
|
|
'numberposts' => -1,
|
|
'orderby' => 'post_date',
|
|
'order' => 'ASC',
|
|
'post_type' => 'edd_payment',
|
|
'post_status' => $status,
|
|
'suppress_filters' => 1,
|
|
'fields' => 'ids',
|
|
'date_query' => array(
|
|
array(
|
|
'before' => array(
|
|
'year' => $_POST[ 'year' ],
|
|
'month' => $_POST[ 'month' ],
|
|
'day' => $_POST[ 'day' ]
|
|
),
|
|
'inclusive' => true
|
|
)
|
|
)
|
|
);
|
|
} else if ( $mode === 2 ) {
|
|
$args = array(
|
|
'numberposts' => -1,
|
|
'orderby' => 'post_date',
|
|
'order' => 'ASC',
|
|
'post_type' => 'edd_payment',
|
|
'post_status' => $status,
|
|
'suppress_filters' => 1,
|
|
'fields' => 'ids',
|
|
'date_query' => array(
|
|
array(
|
|
'after' => array(
|
|
'year' => $_POST[ 'newyear' ],
|
|
'month' => $_POST[ 'newmonth' ],
|
|
'day' => $_POST[ 'newday' ]
|
|
),
|
|
'inclusive' => true
|
|
)
|
|
)
|
|
);
|
|
} else {
|
|
$args = array(
|
|
'numberposts' => -1,
|
|
'orderby' => 'post_date',
|
|
'order' => 'ASC',
|
|
'post_type' => 'edd_payment',
|
|
'post_status' => $status,
|
|
'suppress_filters' => 1,
|
|
'fields' => 'ids',
|
|
'date_query' => array(
|
|
array(
|
|
'before' => array(
|
|
'year' => $_POST[ 'startyear' ],
|
|
'month' => $_POST[ 'startmonth' ],
|
|
'day' => $_POST[ 'startday' ]
|
|
),
|
|
'after' => array(
|
|
'year' => $_POST[ 'endyear' ],
|
|
'month' => $_POST[ 'endmonth' ],
|
|
'day' => $_POST[ 'endday' ]
|
|
),
|
|
'inclusive' => true
|
|
)
|
|
)
|
|
);
|
|
}
|
|
$cnt = get_posts( $args );
|
|
if ( $cnt ) {
|
|
$count = count( $cnt );
|
|
echo "<br \><div id=\"message\" class=\"updated fade\">Deleting <strong>$count</strong> item(s)...<br />";
|
|
foreach ( $cnt as $id ) {
|
|
// Don't do it if more than 50
|
|
if ( $count < 50 ) {
|
|
echo "Deleted Order #" . $id . "<br />";
|
|
}
|
|
wp_delete_post( $id, @$_POST[ 'force_delete' ] == "on" );
|
|
if ( isset( $_POST['delete_logs'] ) ) {
|
|
$log_id = $wpdb->get_var( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_edd_log_payment_id' AND meta_value = $id" );
|
|
wp_delete_post( $log_id, true );
|
|
}
|
|
}
|
|
echo "Done!</div><br \>";
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
function emod_main_menu() {
|
|
add_submenu_page( 'edit.php?post_type=download', __( 'Bulk Delete Orders' ), __( 'Bulk Delete Orders' ), 'manage_options', 'emod_mass_delete', 'emod_show_menu' );
|
|
}
|
|
|
|
if ( is_admin() ) {
|
|
add_action( 'admin_menu', 'emod_main_menu', 9 );
|
|
}
|