Move Long-Expired Coupons to the Trash
Cleans up the coupon list by moving coupons that expired more than 90 days ago to the trash, where you can still restore them.
Opens WPIDE on
Code
$wpide_expired_days = 90; // Only coupons expired at least this long ago.
if ( ! function_exists( 'WC' ) || ( ! current_user_can( 'manage_woocommerce' ) && ! ( defined( 'WP_CLI' ) && WP_CLI ) ) ) {
return;
}
$wpide_expired = get_posts( array(
'post_type' => 'shop_coupon',
'post_status' => 'publish',
'posts_per_page' => 500,
'fields' => 'ids',
'no_found_rows' => true,
'meta_query' => array( // phpcs:ignore WordPress.DB.SlowDBQuery
array(
'key' => 'date_expires',
'value' => array( 1, time() - $wpide_expired_days * DAY_IN_SECONDS ),
'compare' => 'BETWEEN',
'type' => 'NUMERIC',
),
),
) );
foreach ( $wpide_expired as $id ) {
wp_trash_post( $id );
}
echo esc_html( sprintf( '%d expired coupon(s) moved to the trash.', count( $wpide_expired ) ) );
Notes
Runs only when you press Run in the editor or use WP-CLI, handles up to 500 coupons per run and never deletes permanently.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.