Vô hiệu hóa phiếu giảm giá áp dụng cho sản phẩm bất kỳ trong WooCommerce

Đầu tiên thêm một hộp kiểm tùy chỉnh trong metabox cài đặt chung của sản phẩm để tắt chức năng phiếu giảm giá cho sản phẩm hiện tại.

Vô hiệu hóa phiếu giảm giá áp dụng cho sản phẩm bất kỳ trong WooCommerce
Vô hiệu hóa phiếu giảm giá áp dụng cho sản phẩm bất kỳ trong WooCommerce

Đoạn mã PHP: Vô hiệu hóa phiếu giảm giá áp dụng cho sản phẩm bất kỳ trong WooCommerce

// Create and display the custom field in product general setting tab
add_action( 'woocommerce_product_options_general_product_data', 'add_custom_field_general_product_fields' );
function add_custom_field_general_product_fields(){
    global $post;

    echo '<div class="product_custom_field">';

    // Custom Product Checkbox Field
    woocommerce_wp_checkbox( array(
        'id'        => '_disabled_for_coupons',
        'label'     => __('Vô hiệu hóa phiếu giảm giá', 'woocommerce'),
        'description' => __('Vô hiệu hóa sản phẩm này khỏi phiếu giảm giá', 'woocommerce'),
        'desc_tip'  => 'true',
    ) );

    echo '</div>';;
}

// Save the custom field and update all excluded product Ids in option WP settings
add_action( 'woocommerce_process_product_meta', 'save_custom_field_general_product_fields', 10, 1 );
function save_custom_field_general_product_fields( $post_id ){

    $current_disabled = isset( $_POST['_disabled_for_coupons'] ) ? 'yes' : 'no';

    $disabled_products = get_option( '_products_disabled_for_coupons' );
    if( empty($disabled_products) ) {
        if( $current_disabled == 'yes' )
            $disabled_products = array( $post_id );
    } else {
        if( $current_disabled == 'yes' ) {
            $disabled_products[] = $post_id;
            $disabled_products = array_unique( $disabled_products );
        } else {
            if ( ( $key = array_search( $post_id, $disabled_products ) ) !== false )
                unset( $disabled_products[$key] );
        }
    }

    update_post_meta( $post_id, '_disabled_for_coupons', $current_disabled );
    update_option( '_products_disabled_for_coupons', $disabled_products );
}

// Make coupons invalid at product level
add_filter('woocommerce_coupon_is_valid_for_product', 'set_coupon_validity_for_excluded_products', 12, 4);
function set_coupon_validity_for_excluded_products($valid, $product, $coupon, $values ){
    if( ! count(get_option( '_products_disabled_for_coupons' )) > 0 ) return $valid;

    $disabled_products = get_option( '_products_disabled_for_coupons' );
    if( in_array( $product->get_id(), $disabled_products ) )
        $valid = false;

    return $valid;
}

// Set the product discount amount to zero
add_filter( 'woocommerce_coupon_get_discount_amount', 'zero_discount_for_excluded_products', 12, 5 );
function zero_discount_for_excluded_products($discount, $discounting_amount, $cart_item, $single, $coupon ){
    if( ! count(get_option( '_products_disabled_for_coupons' )) > 0 ) return $discount;

    $disabled_products = get_option( '_products_disabled_for_coupons' );
    if( in_array( $cart_item['product_id'], $disabled_products ) )
        $discount = 0;

    return $discount;
}

Làm sao để thêm đoạn mã này?

Bạn có thể đặt các đoạn mã PHP ở cuối tệp tin functions.php trong chủ đề con hoặc chủ đề bạn đang sử dụng (trước “?>” Nếu bạn có nó). Hãy chắc chắn rằng bạn biết những gì bạn đang làm khi chỉnh sửa các tệp tin quan trọng như vậy – nếu bạn cần thêm hướng dẫn, vui lòng xem bài viết Cách thêm đoạn mã tùy biến vào WooCommerce.

0 0 vote
Article Rating

BẢO MẬT WORDPRESS

Bình luận

2 bình luận về "Vô hiệu hóa phiếu giảm giá áp dụng cho sản phẩm bất kỳ trong WooCommerce"

guest
2 Comments
Mới nhất
Cũ nhất
Inline Feedbacks
View all comments
Ngọc Quý<span class="bl-woovn">3 bình luận</span>
Ngọc Quý3 bình luận
8 tháng trước

clap