En çok ihtiyaç duyduğunuz anda güvenilir WordPress eğitimleri.

Yeni Başlayanlar İçin WordPress Kılavuzu

12+

Yılların Dijital Deneyimi

[total_posts]

Yayınlanan İçerik

WooCommerce En Ucuz Ürüne İndirim Uygulama

WooCommerce mağaza promosyonları yürütüyorsanız bu küçük kod parçası size bu konuda yardımcı olacaktır. Mesela “ 2 ürün alana yarı indirim ” ya da “ 3 ürün alana en ucuzunu bedava ” kampanyası nasıl yürütülür?

Bu geçici çözümün ardındaki hile, sepette dolaşarak en ucuz ürünü bulmak ve ardından fiyatını normal fiyattan daha düşük olacak şekilde ayarlamaktır. Eğlence!

WooCommerce En Ucuz Ürüne İndirim Uygulama | Ekran Resmi 2023 10 26 21.29.09

En ucuz ürüne %50 indirim uygulama:Woocommerce 8

PHP Snippet'i: WooCommerce Sepetinde En Ucuz Ürün Satış Fiyatını Belirleyin

Aşağıdaki kod, sepetteki en ucuz ürüne %50 indirim uygular (ayrıca BOGO 50 = Bir Alana Bir %50 İndirim denir).

 

Alt alandaki kodları Temanızın functions.php sayfasına eklemeniz gerekmektedir.

				
					/**
 * @snippet       Sepette En ucuz ürüne %50 İndirim Uygulama @ WooCommerce Yönetim Ürünler Listesi
 * @author        Furkan Sağlam
 * @compatible    WooCommerce 8
 */
add_action( 'woocommerce_before_calculate_totals', 'fks_cheapest_cart_item_half_off', 9999 );
  
function fks_cheapest_cart_item_half_off( $cart ) {
  
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
  
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return;
  
    if ( count( $cart->get_cart() ) < 2 ) return; // AT LEAST 2 PRODUCTS IN THE CART
 
    $min = PHP_FLOAT_MAX;
  
    // LOOP THROUGH CART TO FIND CHEAPEST ITEM
    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
      if ( $cart_item['data']->get_price() <= $min ) {
         $min = $cart_item['data']->get_price();
         $cheapest = $cart_item_key;
      }
    }
 
    // LOOP THROUGH CART TO REDUCE CHEAPEST ITEM PRICE BY 50%
    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
      if ( $cheapest == $cart_item_key ) {
         $price = $cart_item['data']->get_price() / 2;
         $cart_item['data']->set_price( $price );
         $cart_item['data']->set_sale_price( $price );
      }
    }
     
 }
				
			

Kod eklendikten sonra sepette en uygun fiyatlı ürününüze %50 İndirim uygulanmış olacaktır.

WooCommerce En Ucuz Ürüne İndirim Uygulama | Ekran Resmi 2023 10 26 21.26.53

Görselde gördüğünüz gibi indirim uygulandı ama bunu müşteriye bildirmemiz ve göstermemiz de gerekmektedir. İndirim uygulanmadan önceki fiyatını da göstermemiz gerekiyor bu durumla ilgili kodlarıda alt alanda sizlerle paylaşıyorum.

				
					add_filter( 'woocommerce_cart_item_price', 'fks_change_cart_table_price_display', 30, 3 );
  
function fks_change_cart_table_price_display( $price, $values, $cart_item_key ) {
   $slashed_price = $values['data']->get_price_html();
   $is_on_sale = $values['data']->is_on_sale();
   if ( $is_on_sale ) {
      $price = $slashed_price;
   }
   return $price;
}
				
			
WooCommerce En Ucuz Ürüne İndirim Uygulama | Ekran Resmi 2023 10 26 21.44.29

Daha Gelişmiş Versiyon (WooCommerce 9.9.4 Uyumlu)

Aşağıda paylaşacağımız yeni sürüm, önceki temel örneğe göre çok daha gelişmiş bir yapıya sahiptir. WooCommerce 9.9.4 ile test edilmiş ve şu geliştirmeleri içermektedir:

🔧 Özellikler:

  • Sepetteki en ucuz üründen yalnızca 1 adet için %50 indirim uygulanır.

  • Ürün adeti 2 ve üzeri ise, sepet satırı otomatik olarak bölünür: 1 adet indirimli, kalanlar normal fiyatlı olacak şekilde yeniden eklenir.

  • İndirim uygulanan ürüne etiket eklenir: “%50 İndirim Uygulandı (Bu indirim sadece 1 ürün için geçerlidir.)”

  • Kod mantığı idempotent’tir; yani indirim bir kere uygulandıktan sonra tekrar çalışmaz.

  • İndirim doğrudan get_regular_price() üzerinden hesaplandığı için fiyat doğruluğu korunur.

  • WooCommerce’in son sürümüyle tam uyumludur (9.9.4).

 

💡 Kullanım Senaryosu:

Bu sistem, örneğin “Sepette En Ucuz Ürüne %50 İndirim!” kampanyası gibi kampanyaları uygulamak isteyen mağazalar için idealdir. Sepetinde 3 ürün olan bir müşteri düşünün:

  • Ürün A: 500 TL

  • Ürün B: 250 TL

  • Ürün C: 100 TL

Bu sistem sayesinde yalnızca Ürün C’den 1 adet için 50 TL indirim uygulanır. Müşteri kampanyanın avantajını net bir şekilde görürken, mağazanız da kârlılığı korur.

 

🧩 Kodu İnceleyin:

Aşağıdaki kodları functions.php dosyanıza ekleyerek sistemi etkinleştirebilirsiniz:

				
					/**
 * @snippet       En Ucuz Üründen Sadece 1 Adede %50 İndirim + Etiket + Koşullu Mantık @ WooCommerce 9.9.4
 * @author        Furkan Sağlam
 */

add_action( 'woocommerce_cart_loaded_from_session', 'fks_split_and_discount_one_cheapest_item', 30 );

function fks_split_and_discount_one_cheapest_item( $cart ) {
	if ( is_admin() || did_action('fks_cart_already_split') ) return;
	if ( $cart->is_empty() || count( $cart->get_cart() ) < 2 ) return;

	// Eğer daha önce indirim uygulanmışsa bir daha yapma
	foreach ( $cart->get_cart() as $item ) {
		if ( isset( $item['_fks_discounted'] ) ) {
			do_action('fks_cart_already_split');
			return;
		}
	}

	$cheapest_key = null;
	$cheapest_price = PHP_FLOAT_MAX;

	foreach ( $cart->get_cart() as $key => $item ) {
		$price = $item['data']->get_price();
		if ( $price < $cheapest_price ) {
			$cheapest_price = $price;
			$cheapest_key = $key;
		}
	}

	if ( ! $cheapest_key ) return;

	$item = $cart->get_cart_item( $cheapest_key );

	if ( $item['quantity'] == 1 ) {
		// Tek adet varsa direkt satırı değiştir (aynı satırda kalacak)
		$cart->remove_cart_item( $cheapest_key );
		$cart->add_to_cart(
			$item['product_id'],
			1,
			$item['variation_id'],
			$item['variation'],
			array( '_fks_discounted' => true )
		);
	} elseif ( $item['quantity'] >= 2 ) {
		// Satırı böl: 1 indirimli + geri kalanı normal
		$product_id   = $item['product_id'];
		$variation_id = $item['variation_id'];
		$variation    = $item['variation'];
		$remaining    = $item['quantity'] - 1;

		$cart->remove_cart_item( $cheapest_key );

		$cart->add_to_cart( $product_id, 1, $variation_id, $variation, array(
			'_fks_discounted' => true
		));

		if ( $remaining > 0 ) {
			$cart->add_to_cart( $product_id, $remaining, $variation_id, $variation );
		}
	}
}

add_action( 'woocommerce_before_calculate_totals', 'fks_apply_discounted_price', 9999 );

function fks_apply_discounted_price( $cart ) {
	if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

	foreach ( $cart->get_cart() as $item ) {
		if ( isset( $item['_fks_discounted'] ) && $item['_fks_discounted'] === true ) {
			$product = $item['data'];
			$regular_price = floatval( $product->get_regular_price() );
			$discounted_price = wc_format_decimal( $regular_price * 0.5, wc_get_price_decimals() );
			$product->set_price( $discounted_price );
		}
	}
}

add_filter( 'woocommerce_cart_item_name', 'fks_add_discount_label_to_item', 10, 3 );

function fks_add_discount_label_to_item( $name, $cart_item, $cart_item_key ) {
	if ( isset( $cart_item['_fks_discounted'] ) && $cart_item['_fks_discounted'] === true ) {
		$name .= '<br><small style="color:green;font-weight:bold;">%50 İndirim Uygulandı<br><span style="color:#555;">(Bu indirim sadece 1 ürün için geçerlidir.)</span></small>';
	}
	return $name;
}

				
			

✅ Geliştirici Notları:

  • woocommerce_cart_loaded_from_session hook’u ile indirim mantığı yalnızca sepet yüklendiğinde tetiklenir.

  • _fks_discounted meta değeri sayesinde indirimli ürünler işaretlenir ve tekrar indirim uygulanmaz.

  • woocommerce_before_calculate_totals ile ürün fiyatı sadece indirimli ürüne özel olarak %50 düşürülür.

  • woocommerce_cart_item_name filtresiyle görsel bir bilgilendirme sağlanır.

💬 Kodla ilgili desteğe mi ihtiyacınız var? Yorumlarda paylaşabilirsiniz. Geliştirici topluluğuyla birlikte daha işlevsel hale getirebiliriz.

👉 Not: Bu kodlar WooCommerce 9.9.4 sürümü ile test edilmiştir. Daha eski sürümlerde veya farklı temalarda kullanımda test edilmesi önerilir.

Bu makaleyi beğendiyseniz, lütfen WordPress video eğiticileri için YouTube Kanalımıza abone olun. Bizi Twitter ve Facebook’ta da bulabilirsiniz.

Facebook
Twitter
LinkedIn
Email
WhatsApp

İlgilinizi çekebilecek diğer içerikler

Picture of Furkan Sağlam

Furkan Sağlam

Mavis Agency'de Dijital Yöneticisi olarak görev yapmaktadır. Marka yönetimi, e-ticaret çözümleri ve dijital pazarlama stratejileri konularında uzmandır. Blog yazılarında, güncel dijital trendler ve etkili pazarlama taktikleri üzerine değerli bilgiler sunmaktadır. Dijital dünyada markaların başarısına katkıda bulunmayı amaçlamaktadır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

3.200'den fazla okuyucu

furkansaglam.com’u yeni içerikler için takip edin!

Haftanın WordPress Eklentisi

WP Sweep

Eski taslakları, spam yorumları ve kullanılmayan verileri silerek performansınızı artırın.
Hemen keşfedin!