有没有一种方法可以根据一定数量生成许多Woocommerce优惠券?

卡洛斯·阿莫罗斯

我正在修复一个加载插件的Woocommerce网站,现在我需要根据购买金额实现自动优惠券生成器:例如,如果客户购买450美元,我想为每100美元购买建立一条规则,4将产生40美元的优惠券。所有这些代码都应发送给客户。

我已经阅读了WooCommerce文档,可以在其中创建优惠券:https : //docs.woocommerce.com/document/create-a-coupon-programatically/,并且已经实现并发送了订单审核邮件(付款后确认):

function add_order_email_instructions( $order, $sent_to_admin ) {

    if ( ! $sent_to_admin && $order->get_user_id() && 'processing' == $order->get_status()) {

        $lista_cupones  = array();
        $amount = '40';

        for ($i=1; $i<=$order->get_total()/100; $i++) {

            $longitud = 12;
            $key = '';
            $pattern = '1234567890ABCDFGHIJKLMNOPQRSTUWYZ';
            $max = strlen($pattern)-1;
            for($i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
            $coupon_code = $key;

            $discount_type = 'fixed_cart'; 
            $coupon = array(
                'post_title' => $coupon_code,
                'post_content' => ''.$to,
                'post_status' => 'publish',
                'post_author' => 1,
                'post_type'     => 'shop_coupon'
            );

            $new_coupon_id = wp_insert_post( $coupon );
            update_post_meta( $new_coupon_id, 'discount_type', $discount_type );
            update_post_meta( $new_coupon_id, 'coupon_amount', $amount );
            update_post_meta( $new_coupon_id, 'individual_use', 'yes' );
            update_post_meta( $new_coupon_id, 'product_ids', '' );
            update_post_meta( $new_coupon_id, 'exclude_product_ids', '' );
            update_post_meta( $new_coupon_id, 'minimum_amount', '100' );
            update_post_meta( $new_coupon_id, 'exclude_sale_items', 'yes' );
            update_post_meta( $new_coupon_id, 'exclude_sale', 'yes' );
            update_post_meta( $new_coupon_id, 'usage_limit', '1' );
            update_post_meta( $new_coupon_id, 'expiry_date', strtotime("+3 days") );
            update_post_meta( $new_coupon_id, 'apply_before_tax', 'yes' );
            update_post_meta( $new_coupon_id, 'free_shipping', 'no' );

            array_push($lista_cupones, $coupon_code);

        }
        echo '<h2>';

        printf( __( 'Obt&eacute;n 40 soles de descuento')
        );
        echo '</h2>';

        printf(
            __( 'Gracias por su compra. Use el código de descuento <strong>%2$s</strong> para recibir %1$s soles de descuento en su siguiente compra.'),
            $amount,
            $coupon_code
        );
        echo '</p>';
    }
}
add_action('woocommerce_email_before_order_table','add_order_email_instructions',10);

现在,这一半有效:它可以验证订单总额是否少于$ 100,并且不会生成优惠券,但是如果订单总额高于200,则即使订单总额为200、300 400等,它也只会给我一张优惠券(它甚至不会生成一张以上的优惠券,似乎只能循环一次并停止)。

谢谢!

卡洛斯·阿莫罗斯

已经解决,这是代码:

function create_coupon () {
    $amount = '40';
    $longitud = 12;
    $key = '';
    $pattern = '1234567890ABCDFGHIJKLMNOPQRSTUWYZ';
    $max = strlen($pattern)-1;
    for($i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
    $coupon_code = $key;

    $discount_type = 'fixed_cart'; 
    $coupon = array(
        'post_title' => $coupon_code,
        'post_content' => ''.$to,
        'post_status' => 'publish',
        'post_author' => 1,
        'post_type'     => 'shop_coupon'
    );

    $new_coupon_id = wp_insert_post( $coupon );
    update_post_meta( $new_coupon_id, 'discount_type', $discount_type );
    update_post_meta( $new_coupon_id, 'coupon_amount', $amount );
    update_post_meta( $new_coupon_id, 'individual_use', 'yes' );
    update_post_meta( $new_coupon_id, 'product_ids', '' );
    update_post_meta( $new_coupon_id, 'exclude_product_ids', '' );
    update_post_meta( $new_coupon_id, 'minimum_amount', '100' );
    update_post_meta( $new_coupon_id, 'exclude_sale_items', 'yes' );
    update_post_meta( $new_coupon_id, 'exclude_sale', 'yes' );
    update_post_meta( $new_coupon_id, 'usage_limit', '1' );
    update_post_meta( $new_coupon_id, 'expiry_date', strtotime("+3 days") );
    update_post_meta( $new_coupon_id, 'apply_before_tax', 'yes' );
    update_post_meta( $new_coupon_id, 'free_shipping', 'no' );
    //update_post_meta( $new_coupon_id, 'customer_email', $order->get_billing_email());

    return $coupon_code;
}

function add_order_email_instructions( $order, $sent_to_admin ) {

        if ( ! $sent_to_admin && $order->get_user_id() && 'processing' == $order->get_status()) {

            $lista_cupones  = [];
            $numero_cupones = $order->get_total()/100;
            for ($i=1; $i<=$numero_cupones; $i++) { 
                array_push($lista_cupones, create_coupon());
            }
            echo '<h2>';

            printf( __( 'Obt&eacute;n 40 soles de descuento')
            );
            echo '</h2>';

            printf(
                __( 'Gracias por su compra. Use el código de descuento <strong>%2$s</strong> para recibir %1$s soles de descuento en su siguiente compra.'),
                $amount,
                $lista_cupones 
            );
            echo '<br></p>';
        }
}
add_action('woocommerce_email_before_order_table','add_order_email_instructions',10);

这还没有完成,现在我必须在邮件中以适当的数组格式显示它

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有一种方法可以计算出一定数量?

有没有一种方法可以合并两个数据框并仅保留一定数量的出现次数?

有没有一种方法可以在包含某些条件的行下方插入一定数量的行?

有没有一种方法可以为特定列选择特定数量的行?

有没有一种方法可以绑定数据帧中不同数量的行?

有没有一种方法可以计算许多不同的值?

有没有一种方法可以评估B +树所需的叶子数量?

有没有一种方法可以更新ConcurrentMessageListenerContainer中的并发数量?

有没有一种方法可以动态确定cuda流的数量?

有没有一种方法可以生成唯一的整数永久链接?

有没有一种方法可以从TFS生成中生成Intellitrace文件?

有没有一种方法可以根据输入来过滤执行?

有没有一种方法可以根据数组内的标志过滤数组

有没有一种方法可以根据参数更改LINQ查询orderBy?

有没有一种方法可以根据自动换行拆分div?

有没有一种方法可以根据日期过滤物料表

有没有一种方法可以根据类似的文字进行过滤?

有没有一种方法可以生成填充特定字符的字节片?

有没有一种方法可以动态生成Spring Data Jpa查询?

有没有一种方法可以生成可能的简短形式?

有没有一种方法可以在python中自动生成__str __()实现?

有没有一种方法可以在Eclipse中自动生成包装器?

有没有一种方法可以为RESTful堆栈生成样板代码?

有没有一种方法可以计算嵌套for循环生成的索引?

有没有一种方法可以保存OSMnx中生成的等时线图?

有没有一种方法可以将Dependabot的徽章生成到GitHub?

有没有一种方法可以从XSD架构生成Microsoft Bond架构?

有没有一种方法可以在T-SQL中以一定的增量执行DATEADD()?

有没有一种方法可以按一定顺序检索%Library.RelationshipObject的对象