Купоны — это круто, кто не любит скидки? Существует много техник по созданию купонов для ваши пользователей, но у WooCommerce есть фатальный недостаток при работе с купонами — он автоматически не удаляет просроченные купоны. Попробуем это исправить.
Откройте functions.php
вашей активной темы и добавьте следующий код в конец этого файла:
/** * Запланируем ежедневную задачу */ 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' ); /** * Удалим в корзину просроченные купоны */ 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' );
Этот сниппет автоматически переместит в корзину все просроченные купоны в вашем магазине. Для окончательного их удаления нужно будет произвести всего один клик — щёлкнуть кнопку «Очистить корзину».
Если вам лень делать клик, то и этот процесс можно автоматизировать, добавив true
вторым параметром в функцию wp_trash_post
, этим мы скажем удалять купоны в обход корзины:
wp_delete_post( $coupon->ID, true );
Удалённые таким способом купоны невозможно будет восстановить в будущем.
Так как в сниппете используется стандартный крон WordPress, убедитесь для начала, что он у вас не отключен.
Ссылки
Источник: https://www.kobzarev.com/wordpress/delete-expired-coupons-automatically/