Как автоматически удалить просроченные и использованные купоны в Woocommerce? - PullRequest
1 голос
/ 03 октября 2019

В моем functions.php я хочу добавить функцию, которая перемещает купоны с истекшим сроком действия и / или купоны, которые достигли своего предела использования в корзину. Я хотел бы убрать купоны с ограничением использования 1 и счетчиком использования 1 или более. Я хотел бы, чтобы эта функция выполнялась ежедневно.

Я уже нашел решение для просроченных купонов. Однако мне все еще нужно, чтобы купоны, которые достигли предела их использования, также были удалены в корзину. Код ниже взят с этого сайта. https://nicola.blog/2018/08/01/delete-expired-coupons-automatically/

/**
* 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' );

К функции, вставленной выше, я хотел бы добавить код, который также перемещает купоны с пределом использования 1 и счетчиком использования 1 или более в корзину. Ограничение использования на купон, а не на пользователя. Любая помощь с этим будет очень признателен.

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Спасибо, это работает просто отлично! Я должен был упомянуть, что отдельная функция тоже была в порядке.

0 голосов
/ 04 октября 2019

К сожалению, я не смог найти способ изменить ваш запрос, чтобы включить купоны, которые достигли предела их использования. Однако вы можете добавить следующее, чтобы запросить купоны и просмотреть их, чтобы найти те, которые достигли своего предела.

add_action( 'delete_expired_coupons', 'delete_used_coupons' );
function delete_used_coupons() {
    $args = array(
        'posts_per_page' => -1,
        'post_type'      => 'shop_coupon',
        'post_status'    => 'publish',
        'meta_query'     => array(
            'relation'   => 'AND',
            array(
                'key'     => 'usage_count',
                'value'   => 0,
                'compare' => '>'
            ),
            array(
                'key'     => 'usage_limit',
                'value'   => 0,
                'compare' => '>'
            )
        )
    );

    $coupons = get_posts( $args );

    if ( ! empty( $coupons ) ) {
        foreach ( $coupons as $coupon ) {
            if ($coupon->get_usage_count() >= $coupon->get_usage_limit()){
                wp_trash_post( $coupon->ID );
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...