Bagaimana menawarkan diskon berdasarkan kuantitas di WooCommerce

Diterbitkan: 2020-01-27

Biasanya, sebagai pemilik toko, Anda terkadang ingin menawarkan diskon jika pelanggan membeli lebih dari satu kuantitas produk tertentu. Ini mungkin untuk meningkatkan penjualan atau menyelesaikan kelebihan stok. Dalam posting ini, Anda akan belajar bagaimana menawarkan diskon berdasarkan kuantitas di WooCommerce menggunakan potongan kode dan plugin.

Bagaimana menawarkan diskon berdasarkan kuantitas di WooCommerce menggunakan Cuplikan Kode

Mari kita jelajahi cara menggunakan cuplikan kode untuk melakukan ini. Dengan cuplikan kode ini, kami menawarkan diskon 5% kepada pelanggan jika mereka membeli lebih dari 2 jumlah produk yang sama.

Untuk melakukan ini, Anda perlu menambahkan kode di bawah ini ke file functions.php dari tema anak Anda:

 add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 );

function ts_add_default_price_as_custom( $cart_item_data, $product_id, $variation_id ){

    $produk_id = $variasi_id > 0 ? $variasi_id : $id_produk;

    ## ----- SET DISKON DI SINI ----- ##
    $discount_percentage = 5; // Diskon (5%)

    // Objek WC_Product
    $produk = wc_get_product($produk_id);

    $harga = (mengambang) $produk->get_price();

    // Tetapkan harga dasar default Produk sebagai data item keranjang kustom
    $cart_item_data['base_price'] = $harga;

    // Tetapkan harga diskon Produk sebagai data item keranjang khusus
    $cart_item_data['new_price'] = $price * (100 - $discount_percentage) / 100;

    // Tetapkan persentase sebagai data item keranjang khusus
    $cart_item_data['percentage'] = $discount_percentage;

    kembalikan $cart_item_data;
}

// Menampilkan harga asli produk
add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 );

function ts_display_cart_items_default_price( $product_price, $cart_item, $cart_item_key ){
    if( isset($cart_item['base_price']) ) {
        $produk = $cart_item['data'];
        $produk_harga = wc_price( wc_get_price_to_display( $produk, array( 'harga' => $cart_item['base_price'] ) ) );
    }
    kembalikan $produk_harga;
}

// Menampilkan nama produk dengan persentase diskon
add_filter( 'woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
function ts_add_percentage_to_item_name( $product_name, $cart_item, $cart_item_key ){
    if( isset($cart_item['percentage']) && isset($cart_item['base_price']) ) {
        if( $cart_item['data']->get_price() != $cart_item['base_price'] )
            $product_name .= ' <em>(' . $cart_item['percentage'] . '% diskon)</em>';
    }
    kembalikan $nama_produk;
}

add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1 );
function ts_custom_discounted_cart_item_price( $cart ) {
    jika ( is_admin() && ! didefinisikan( 'DOING_AJAX' ) )
        kembali;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        kembali;

    ## ----- SET KUANTITAS DI SINI ----- ##
    $target_qty = 2; // Jumlah yang ditargetkan

    // Ulangi item keranjang
    foreach ( $cart->get_cart() sebagai $cart_item ) {

        // Untuk jumlah barang 2 atau lebih
        if( $cart_item['quantity'] >= $targeted_qty && isset($cart_item['new_price']) ){

            // Tetapkan harga diskon item keranjang
            $cart_item['data']->set_price($cart_item['new_price']);
        }
    }
}

Kode di atas akan menambahkan diskon 5% jika jumlah produk di atas 2. Anda dapat mengubah ini sesuai dengan kebutuhan Anda dengan mengubah variabel $discount_percentage untuk mengatur diskon yang diinginkan, dan $targeted_qty untuk mengatur jumlah di atas yang Anda ingin menerapkan diskon.

offer discounts based on quantity in WooCommerce - Updated Cart contents

Anda sekarang akan dapat melihat harga diskon jika Anda menambahkan 2 atau lebih jumlah produk yang sama di keranjang Anda.

Kami telah menggunakan empat kait utama dalam kode di atas:

woocommerce_add_cart_item_data : Filter hook ini digunakan untuk mengubah isi/meta data cart.
woocommerce_cart_item_price : Kait filter ini digunakan untuk mengubah cara harga ditampilkan di keranjang.
woocommerce_cart_item_name : Kait filter ini dapat digunakan untuk mengubah nama produk di troli. Dalam contoh kami, kami menggunakannya untuk menambahkan persentase diskon ke nama produk.
woocommerce_before_calculate_totals : Kait tindakan ini digunakan untuk mengganti harga produk di keranjang.

Cara menawarkan diskon berdasarkan kuantitas hanya untuk barang yang TIDAK Dijual:

Jika Anda ingin membatasi ini hanya untuk produk yang tidak dijual, Anda cukup mengedit cuplikan kode di atas untuk menambahkan kondisi di dalam fungsi yang ditambahkan ke kait woocommerce_add_cart_item_data:

 add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 );
function ts_add_default_price_as_custom( $cart_item_data, $product_id, $variation_id ){
    $produk_id = $variasi_id > 0 ? $variasi_id : $id_produk;

    ## ----- SET DISKON DI SINI ----- ##
    $discount_percentage = 5; // Diskon (5%)

    // Objek WC_Product
    $produk = wc_get_product($produk_id);

    // TAMBAHKAN KONDISI DI SINI untuk menawarkan DISKON HANYA untuk Produk NON Penjualan
    if( ! $produk->is_on_sale() ){
        $harga = (mengambang) $produk->get_price();

        // Tetapkan harga dasar default Produk sebagai data item keranjang kustom
        $cart_item_data['base_price'] = $harga;

        // Tetapkan harga diskon Produk sebagai data item keranjang khusus
        $cart_item_data['new_price'] = $price * (100 - $discount_percentage) / 100;

        // Tetapkan persentase sebagai data item keranjang khusus
        $cart_item_data['percentage'] = $discount_percentage;
    }

    kembalikan $cart_item_data;
}

// Menampilkan harga asli produk
add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 );
function ts_display_cart_items_default_price( $product_price, $cart_item, $cart_item_key ){
    if( isset($cart_item['base_price']) ) {
        $produk = $cart_item['data'];
        $produk_harga = wc_price( wc_get_price_to_display( $produk, array( 'harga' => $cart_item['base_price'] ) ) );
    }
    kembalikan $produk_harga;
}

// Menampilkan nama produk dengan persentase diskon
add_filter( 'woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
function ts_add_percentage_to_item_name( $product_name, $cart_item, $cart_item_key ){
    if( isset($cart_item['percentage']) && isset($cart_item['base_price']) ) {
        if( $cart_item['data']->get_price() != $cart_item['base_price'] )
            $product_name .= ' <em>(' . $cart_item['percentage'] . '% diskon)</em>';
    }
    kembalikan $nama_produk;
}

add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1 );
function ts_custom_discounted_cart_item_price( $cart ) {
    jika ( is_admin() && ! didefinisikan( 'DOING_AJAX' ) )
        kembali;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        kembali;

    ## ----- SET KUANTITAS DI SINI ----- ##
    $target_qty = 2; // Jumlah yang ditargetkan

    // Ulangi item keranjang
    foreach ( $cart->get_cart() sebagai $cart_item ) {

        // Untuk jumlah barang 2 atau lebih
        if( $cart_item['quantity'] >= $targeted_qty && isset($cart_item['new_price']) ){

            // Tetapkan harga diskon item keranjang
            $cart_item['data']->set_price($cart_item['new_price']);
        }
    }
} 

Dengan cara ini, Anda dapat menawarkan diskon berdasarkan kuantitas menggunakan cuplikan kode untuk non-penjualan, penjualan, atau semua produk yaitu seluruh toko dengan menyatakan kondisi yang sesuai di dalam fungsi yang ditambahkan ke kait filter woocommerce_add_cart_item_data .

Bagaimana menawarkan diskon berdasarkan kuantitas di WooCommerce menggunakan Plugin

Jika Anda merasa tidak nyaman dengan menambahkan cuplikan kode ke file situs web Anda, Anda juga dapat menggunakan plugin untuk melakukannya:

  1. Aturan Diskon untuk WooCommerce : Ini adalah plugin gratis yang memungkinkan Anda menambahkan persentase diskon tidak hanya berdasarkan jumlah produk, tetapi juga jika pelanggan Anda melebihi batas harga tertentu. Anda juga dapat menambahkan persentase diskon pada sejumlah item tertentu (tidak harus dari produk yang sama). Versi PRO dari plugin ini memungkinkan Anda untuk menambahkan diskon seluruh kategori, penawaran BOGO (Beli Satu Gratis Satu), diskon harga tetap alih-alih diskon persentase, dan banyak lagi.
  2. Diskon Bersyarat untuk WooCommerce: Ini adalah plugin lain yang menawarkan hampir semua fitur penting dalam versi gratisnya- Anda dapat menambahkan diskon berdasarkan kuantitas, jumlah item keranjang, untuk kategori tertentu, pada produk tertentu, pada fitur variabel (kemeja biru, ukuran Medium dll.), untuk peran toko tertentu atau bahkan pelanggan tertentu. Versi PRO-nya memiliki beberapa fitur tambahan, salah satunya adalah menambahkan produk gratis ke troli saat membeli produk tertentu.
  3. Kupon Cerdas: Selain kartu hadiah, kredit toko, kupon URL, dan pembatasan lanjutan, Anda juga dapat membatasi kupon berdasarkan jumlah produk tertentu di keranjang (contoh – 10 kaos) dan juga jumlah total produk dari beberapa produk di troli (contoh – 5 baju + 2 celana + 3 ikat pinggang).

Dengan cara ini, Anda dapat menggunakan potongan kode atau plugin untuk menawarkan diskon kepada pelanggan Anda berdasarkan jumlah produk.