Last active
September 4, 2023 15:23
-
-
Save eksiscloud/be60a5833e812372b634b6396adcbb73 to your computer and use it in GitHub Desktop.
Delete coupons of Woocommerce when those are expired
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* add this in the functions.php of theme/child theme/snippets plugin | |
* Schedule the daily event if necessary. | |
*/ | |
function schedule_delete_expired_coupons() { | |
if ( ! wp_next_scheduled( 'delete_expired_coupons' ) ) { | |
wp_schedule_event( time(), 'daily', 'delete_expired_coupons' ); | |
} | |
} | |
add_action( 'init', 'schedule_delete_expired_coupons' ); | |
/** | |
* Trash all expired coupons when the event is triggered. | |
*/ | |
function delete_expired_coupons() { | |
$args = array( | |
'posts_per_page' => -1, | |
'post_type' => 'shop_coupon', | |
'post_status' => 'publish', | |
'meta_query' => array( | |
'relation' => 'AND', | |
array( | |
'key' => 'expiry_date', | |
'value' => current_time( 'Y-m-d' ), | |
'compare' => '<=' | |
), | |
array( | |
'key' => 'expiry_date', | |
'value' => '', | |
'compare' => '!=' | |
) | |
) | |
); | |
$coupons = get_posts( $args ); | |
if ( ! empty( $coupons ) ) { | |
$current_time = current_time( 'timestamp' ); | |
foreach ( $coupons as $coupon ) { | |
wp_trash_post( $coupon->ID ); | |
} | |
} | |
} | |
add_action( 'delete_expired_coupons', 'delete_expired_coupons' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This code is outdated. Its not working because WooCoommerce has changed a way how some data is stored in the database.
I have created GIST with updated solution which is tested and its working ⬇️
gist.github.com/spasicm/1a33a5d53e193f06354b9c838036f69b