php - 如何检查哪些优惠券适用于 WooCommerce 中的哪些产品?

标签 php wordpress woocommerce product coupon

由于我们可以对订单中的每个产品应用不同的优惠券, 有什么方法可以知道哪些优惠券适用于哪些产品? 我使用了 $order->get_used_coupons() 函数,但它只返回已使用的优惠券代码。

请帮忙解决。 谢谢。

最佳答案

Example made for Woocommerce 2.5.x on June 2016 (Will not work in Woocommerce 3+)

此示例基于编译的搜索:

function wc_my_order_coupons( $order_id ) {
    $order = new WC_Order( $order_id );

    // checking if order has some used coupons
    if( sizeof($order->get_used_coupons()) > 0 ) {
        foreach( $order->get_used_coupons() as $coupon_code ) {

            // Retrieving the coupon ID
            $post_obj = get_page_by_title($coupon_code, OBJECT, 'shop_coupon');
            $coupon_id = $post_obj->ID;

            // here is a list of most all data that you can use for a coupon
            $cp_discount_type = get_post_meta( $coupon_id, 'discount_type', true );
            $cp_amount = get_post_meta( $coupon_id, 'coupon_amount', true );
            $cp_indiv_use = get_post_meta( $coupon_id, 'individual_use', true );
            $cp_products = get_post_meta( $coupon_id, 'product_ids' ); 
            $cp_excl_products = get_post_meta( $coupon_id, 'exclude_product_ids' );
            $cp_usage_limit = get_post_meta( $coupon_id, 'usage_limit', true );
            $cp_expiry_date = get_post_meta( $coupon_id, 'expiry_date', true );
            $cp_apply_before_tax = get_post_meta( $coupon_id, 'apply_before_tax', true );
            $cp_free_shipping = get_post_meta( $coupon_id, 'free_shipping', true ); 

            // Getting the products in this order_id
            $items = $order->get_items();
            foreach ($items as $key => $item) {
                $product_name = $item['name'];
                $product_id = $item['product_id'];

                // Example: we use product_ids authorized in the coupon $cp_products
                if (in_array($product_id, $cp_products)) {
                    echo $product_name . 'uses the coupon: ' . $coupon->code . '<br>';
                }
            }
        }
    }
}

引用文献:

关于php - 如何检查哪些优惠券适用于 WooCommerce 中的哪些产品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37760588/

相关文章:

javascript - 引用错误 : twitterFetcher is not defined

php - Wordpress - 在 Woocommerce 上使用 Ajax 添加到购物车按钮简码

PHP basename() 删除变量,奇怪的效果

javascript - 数据表列过滤器未显示

php - 自定义 WordPress 发布查询

php - 如何获取 Woocommerce 产品库图片 URL?

php - 更改 Woocommerce 中产品循环上的 "view cart"产品覆盖按钮

html - CSS 没有 overflow hidden - Wordpress

php - Wordpress 删除机器人元标记 noindex

javascript - 如何通过 Ajax 传递多个变量?