WooCommerce'de miktara dayalı indirimler nasıl sunulur?

Yayınlanan: 2020-01-27

Genellikle, bir mağaza sahibi olarak, müşteriler belirli bir üründen birden fazla satın alırsa bazen indirimler sunmak isteyebilirsiniz. Bu, satışları artırmak veya fazla stokları bitirmek olabilir. Bu yazıda, hem kod parçacıklarını hem de eklentileri kullanarak WooCommerce'de miktara göre nasıl indirim sunacağınızı öğreneceksiniz.

Kod Parçacıklarını kullanarak WooCommerce'de miktara dayalı indirimler nasıl sunulur?

Bunu yapmak için bir kod parçacığının nasıl kullanılacağını keşfedelim. Bu kod parçası ile aynı üründen 2 adetten fazla alan müşterilerimize %5 indirim sunuyoruz.

Bunu yapmak için, alt temanızın function.php dosyasına aşağıdaki kodu eklemeniz gerekecek:

 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 ){

    $product_id = $variation_id > 0 ? $variation_id : $product_id;

    ## ----- İNDİRİMİ BURADAN AYARLAYIN ----- ##
    $indirim_yüzdesi = 5; // İndirim (%5)

    // WC_Ürün Nesnesi
    $ürün = wc_get_product($ürün_kimliği);

    $fiyat = (sabit) $ürün->get_price();

    // Ürün varsayılan taban fiyatını özel sepet öğesi verisi olarak ayarla
    $cart_item_data['base_price'] = $fiyat;

    // Ürün indirimli fiyatını özel sepet öğesi verisi olarak ayarla
    $cart_item_data['new_price'] = $fiyat * (100 - $discount_percentage) / 100;

    // Yüzdeyi özel sepet öğesi verisi olarak ayarla
    $cart_item_data['percentage'] = $discount_percentage;

    $cart_item_data döndür;
}

// Ürünün orijinal fiyatını göster
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']) ) {
        $ürün = $cart_item['veri'];
        $product_price = wc_price( wc_get_price_to_display( $product, array( 'fiyat' => $cart_item['base_price'] ) ) );
    }
    $ürün_fiyatını iade et;
}

// Ürün adını indirim yüzdesi ile göster
add_filter('woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
function ts_add_percentage_to_item_name( $ürün_adı, $cart_item, $cart_item_key ){
    if( isset($cart_item['yüzde']) && isset($cart_item['base_price']) ) {
        if( $cart_item['data']->get_price() != $cart_item['base_price'] )
            $product_name .= ' <em>(' . $cart_item['percentage'] . '% indirimli)</em>';
    }
    $product_name döndür;
}

add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1);
function ts_custom_discounted_cart_item_price( $cart ) {
    if ( is_admin() && ! tanımlı( 'DOING_AJAX' ) )
        dönüş;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        dönüş;

    ## ----- MİKTARAYI BURADA AYARLAYIN ----- ##
    $targeted_qty = 2; // Hedeflenen miktar

    // Sepet öğeleri arasında dolaş
    foreach ( $cart->get_cart() as $cart_item ) {

        // 2 veya daha fazla ürün miktarı için
        if( $cart_item['quantity'] >= $targeted_qty && isset($cart_item['new_price']) ){

            // Sepet öğesi indirimli fiyatını ayarla
            $cart_item['veri']->set_price($cart_item['yeni_fiyat']);
        }
    }
}

Yukarıdaki kod, ürünün miktarı 2'nin üzerindeyse %5'lik bir indirim ekleyecektir. İstediğiniz indirimi ayarlamak için $discount_percentage değişkenini ve üzerindeki miktarı ayarlamak için $targeted_qty değişkenini değiştirerek bunu gereksinimlerinize uyacak şekilde değiştirebilirsiniz. indirimi uygulamak istiyorsunuz.

offer discounts based on quantity in WooCommerce - Updated Cart contents

Sepetinize aynı üründen 2 veya daha fazla adet eklerseniz, şimdi indirimli fiyatı görebileceksiniz.

Yukarıdaki kodda dört ana kanca kullandık:

woocommerce_add_cart_item_data : Bu filtre kancası, sepetin içeriğini / meta verilerini değiştirmek için kullanılır.
woocommerce_cart_item_price : Bu filtre kancası, sepette fiyatların görüntülenme şeklini değiştirmek için kullanılır.
woocommerce_cart_item_name : Bu filtre kancası, sepetteki ürün adını değiştirmek için kullanılabilir. Örneğimizde, indirim yüzdesini ürün adına eklemek için kullanıyoruz.
woocommerce_before_calculate_totals : Bu eylem kancası, sepetteki ürün fiyatını geçersiz kılmak için kullanılır.

Yalnızca Satışta OLMAYAN ürünler için miktara dayalı indirimler nasıl sunulur:

Bunu yalnızca satışta olmayan ürünlerle sınırlamak istiyorsanız, woocommerce_add_cart_item_data kancasına eklenen işlevin içine bir koşul eklemek için yukarıdaki kod parçasını düzenlemeniz yeterlidir:

 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 ){
    $product_id = $variation_id > 0 ? $variation_id : $product_id;

    ## ----- İNDİRİMİ BURADAN AYARLAYIN ----- ##
    $indirim_yüzdesi = 5; // İndirim (%5)

    // WC_Ürün Nesnesi
    $ürün = wc_get_product($ürün_kimliği);

    // SADECE SATIŞTA OLMAYAN Ürünlerde İNDİRİM sunmak için BURAYA KOŞUL EKLEYİN
    if( ! $product->is_on_sale() ){
        $fiyat = (sabit) $ürün->get_price();

        // Ürün varsayılan taban fiyatını özel sepet öğesi verisi olarak ayarla
        $cart_item_data['base_price'] = $fiyat;

        // Ürün indirimli fiyatını özel sepet öğesi verisi olarak ayarla
        $cart_item_data['new_price'] = $fiyat * (100 - $discount_percentage) / 100;

        // Yüzdeyi özel sepet öğesi verisi olarak ayarla
        $cart_item_data['percentage'] = $discount_percentage;
    }

    $cart_item_data döndür;
}

// Ürünün orijinal fiyatını göster
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']) ) {
        $ürün = $cart_item['veri'];
        $product_price = wc_price( wc_get_price_to_display( $product, array( 'fiyat' => $cart_item['base_price'] ) ) );
    }
    $ürün_fiyatını iade et;
}

// Ürün adını indirim yüzdesi ile göster
add_filter('woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
function ts_add_percentage_to_item_name( $ürün_adı, $cart_item, $cart_item_key ){
    if( isset($cart_item['yüzde']) && isset($cart_item['base_price']) ) {
        if( $cart_item['data']->get_price() != $cart_item['base_price'] )
            $product_name .= ' <em>(' . $cart_item['percentage'] . '% indirimli)</em>';
    }
    $product_name döndür;
}

add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1);
function ts_custom_discounted_cart_item_price( $cart ) {
    if ( is_admin() && ! tanımlı( 'DOING_AJAX' ) )
        dönüş;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        dönüş;

    ## ----- MİKTARAYI BURADA AYARLAYIN ----- ##
    $targeted_qty = 2; // Hedeflenen miktar

    // Sepet öğeleri arasında dolaş
    foreach ( $cart->get_cart() as $cart_item ) {

        // 2 veya daha fazla ürün miktarı için
        if( $cart_item['quantity'] >= $targeted_qty && isset($cart_item['new_price']) ){

            // Sepet öğesi indirimli fiyatını ayarla
            $cart_item['veri']->set_price($cart_item['yeni_fiyat']);
        }
    }
} 

Bu sayede satış dışı, indirimli veya mağaza genelindeki tüm ürünler için kod parçacıkları kullanarak miktar bazında indirimler sunabilir, yani woocommerce_add_cart_item_data filtre kancasına eklenen fonksiyon içerisinde uygun koşulu belirtebilirsiniz.

Eklentileri kullanarak WooCommerce'de miktara dayalı indirimler nasıl sunulur?

Web sitesi dosyalarınıza bir kod parçacığı eklemek konusunda rahat değilseniz, bunu yapmak için eklentileri de kullanabilirsiniz:

  1. WooCommerce için İndirim Kuralları : Bu, yalnızca ürün miktarlarına göre değil, aynı zamanda müşterileriniz belirli bir fiyat sınırını aştığında da yüzde indirimler eklemenizi sağlayan ücretsiz bir eklentidir. Ayrıca belirli sayıda ürüne (aynı üründen olması gerekmez) yüzde indirimleri de ekleyebilirsiniz. Bu eklentinin PRO sürümü, kategori genelinde indirimler, BOGO (Bir Satın Bir Ücretsiz Bir Al) fırsatları, yüzde indirim yerine sabit fiyat indirimi ve daha fazlasını eklemenize olanak tanır.
  2. WooCommerce için Koşullu İndirimler: Bu, ücretsiz sürümünde neredeyse tüm önemli özellikleri sunan başka bir eklentidir - Belirli kategoriler için, belirli ürünlerde, değişken özelliklerde (mavi gömlek, orta boy) miktara, sepetteki ürün sayısına göre indirimler ekleyebilirsiniz. vb.), belirli mağaza rolleri ve hatta belirli müşteriler için. PRO versiyonunda birkaç ek özellik vardır, bunlardan biri, belirli bir ürünü satın alırken sepete ücretsiz bir ürün eklemektir.
  3. Akıllı Kuponlar: Hediye kartları, mağaza kredileri, URL kuponları ve gelişmiş kısıtlamaların yanı sıra, bir kuponu sepetteki belirli ürünlerin sayısına (örnek – 10 gömlek) ve ayrıca birden fazla ürünün toplam ürün miktarına göre de kısıtlayabilirsiniz. sepet (örnek – 5 gömlek + 2 pantolon + 3 kemer).

Bu sayede, müşterilerinize ürün miktarına göre indirimler sunmak için kod parçacıkları veya eklentiler kullanabilirsiniz.