Woocommerce: Можно ли добавить бесплатный подарок для n-го заказа?

Я вот уже некоторое время думаю об этом, но пока ничего не нарисовал ...

Кто-нибудь знает, можно ли добавить бесплатный подарок к произвольному заказу продукта Woocommerce автоматически после завершения? Либо на уровне сайта, либо с разными значениями для каждого продукта?

I.E.
Товар, добавленный в корзину, является сотым заказом указанного товара
Заказ оплачен / завершен
Пользователь либо перенаправляется на страницу бесплатного подарка, либо всплывает, либо получает электронное письмо (в зависимости от того, что наиболее удобно)

:-) Надеюсь, это кажется актуальным - любые указатели очень ценятся!

Ed

РЕДАКТИРОВАТЬ: Итак, после некоторой помощи от Аки (ниже) и онлайн-поиска я придумал это, но все еще не могу заставить его работать ... что мне не хватает?

add_action('woocommerce_payment_complete', 'custom_process_order', 10, 1);

function custom_process_order($order_id) {

 //First We are chceking order is paid or not with the order metafields
 $transactionId = get_post_meta($order_id,'_transaction_id', true );
 if(isset($transactionId))
 {
    //getting the count of order
    $orderCount = get_option('orderCount');
    if($orderCount == 99)
    {
        //let's reset order count option zero
        $orderCount = 0;

        //send email or redirect code or popup code
$message = "You're the 100th order of this item, so please, have one on us..Free gift!";
echo "<script type='text/javascript'>alert('$message');</script>";
    }else
    {
        $orderCount = (int) $orderCount+1;
    }
    update_option( 'orderCount', $orderCount );
 }
}

person Ed Tyler    schedule 01.09.2017    source источник


Ответы (1)


Для этого вам нужно сделать какой-то код напрямую, это несложно, вам нужно установить количество, которое вы можете достичь своей цели.

вам нужно установить количество заказов с помощью функции update_option, чем вы можете что-либо сделать.

add_action('woocommerce_payment_complete', 'custom_process_order', 10, 1);

function custom_process_order($order_id) {

 //First We are chceking order is paid or not with the order metafields
 $transactionId = get_post_meta($order_id,'_transaction_id', true );
 if(isset($transactionId))
 {
    //getting the count of order
    $orderCount = get_option('orderCount');
    if($orderCount == 99)
    {
        //let's reset order count option zero
        $orderCount = 0;

        //send email or redirect code or popup code

    }else
    {
        $orderCount = (int) $orderCount+1;
    }
    update_option( 'orderCount', $orderCount );
 }
}
person A Shah    schedule 01.09.2017
comment
Спасибо, Аки, это действительно помогло! Так что мне нужно настроить это в соответствии с моим сайтом и добавить что-то среднее ... всплывающий код &} еще ... чтобы действительно отображать уведомление о подарке? :-) На всякий случай - я явно немного новичок! Спасибо, попробую немного позже, так что сообщу о моем прогрессе! - person Ed Tyler; 01.09.2017
comment
поместите свой код в условие if ... Если это сработает для вас, тогда отдавайте голосование за мой ответ: D, чтобы другие могли использовать этот код. - person A Shah; 01.09.2017
comment
Спасибо, Аки - сейчас мы приступим к некоторым домашним улучшениям, так что сегодня вечером мы исправим код .. все самое лучшее :-) - person Ed Tyler; 01.09.2017
comment
Вы уверены, что проверки наличия идентификатора транзакции достаточно, чтобы классифицировать заказ как оплаченный? Я не знаю, как WooCommerce обрабатывает возвраты и тому подобное, но я думаю, что после того, как транзакция произошла, идентификатор может остаться в базе данных ...? Использование статуса заказа для принятия решения кажется более безопасной ставкой - по крайней мере, если вы не хотите, чтобы я получил возмещение за девять фиктивных заказов, чтобы получить свой бесплатный подарок с десятым ... - person CBroe; 01.09.2017