Tek Seçeneği Olan Varyasyonları Otomatik Seçtirme

WooCommerce’ta varyasyonlu ürünler satarken, eğer bir nitelik için (örneğin Renk) stokta sadece tek bir seçenek kalmışsa, müşterinin bunu manuel olarak seçmesi gerekir. Bu durum, satın alma sürecine gereksiz bir adım ekler. Özellikle “Variation Swatches” gibi görsel buton eklentileri kullanıldığında, standart PHP kodları bazen yetersiz kalabilir.

Aşağıdaki kod parçacığı hem PHP hem de JavaScript kullanarak bu sorunu çözer. Ürün sayfasında tek bir seçenek kaldığında, sistem bunu otomatik olarak seçili hale getirir.

/**
* WooCommerce: Tek Seçeneği Olan Varyasyonları Otomatik Seç (Swatch Uyumlu)
* Yazar: [Adınız veya Site Adınız]
*/

// 1. PHP Tarafı: Veritabanı seviyesinde varsayılan seçimi ayarlar
add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'force_single_variation_php', 10, 1 );

function force_single_variation_php( $args ) {
// Seçenekler dizisi boş değilse ve sadece 1 adet seçenek varsa
if ( ! empty( $args['options'] ) && count( $args['options'] ) === 1 ) {

// Eğer yönetici panelinden manuel bir varsayılan seçilmemişse
if ( empty( $args['selected'] ) ) {
$options = array_values( $args['options'] );
$args['selected'] = $options[0];
}
}
return $args;
}

// 2. JS Tarafı: Görsel butonları (Swatches) tetikler
add_action( 'wp_footer', 'force_single_variation_js' );

function force_single_variation_js() {
// Sadece ürün sayfasında çalışsın
if ( ! is_product() ) return;
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
setTimeout(function() {
var $form = $('.variations_form');

// Tüm seçim kutularını kontrol et
$form.find('.variations select').each(function() {
var $select = $(this);

// Eğer seçenek sayısı 2 veya daha azsa (Biri 'Seçiniz' boşluğu, diğeri tek seçenek)
// Bazı Swatch eklentileri boşluğu sildiği için 1 de olabilir.
if ( $select.find('option').length <= 2 && $select.val() === '' ) {

// O tek seçeneğin değerini al
var singleVal = $select.find('option').last().val();

// Değer varsa seç ve tetikle
if (singleVal) {
$select.val(singleVal);
$select.trigger('change'); // Swatch eklentisine haber ver
}
}
});
}, 100); // Sayfa ve scriptlerin tam yüklenmesi için ufak bir gecikme
});
</script>
<?php
}

Bu kodu temanızın functions.php dosyasına veya Code Snippets eklentisine ekleyebilirsiniz.

Nasıl Çalışır?

  1. PHP Kısmı (woocommerce_dropdown_variation_attribute_options_args): Sayfa oluşturulurken, eğer bir niteliğin sadece bir seçeneği varsa (örneğin sadece ‘Siyah’ stoktaysa), bunu varsayılan olarak işaretler.

  2. JavaScript Kısmı (wp_footer): Sayfa yüklendikten sonra tarayıcı tarafında devreye girer. Variation Swatches gibi eklentiler bazen PHP seçimini görselleştiremez. Bu script, tek kalan seçeneği bulur ve sanki kullanıcı tıklamış gibi trigger('change') olayını çalıştırarak görsel butonun da aktif olmasını sağlar.

Kodlar Kodlayana, Kahveler Bana! ☕

Burada paylaştığım içerikler projelerinde işine yaradıysa veya sana zaman kazandırdıysa, bir kahve ısmarlayarak desteğini gösterebilirsin. Bu destek, daha fazla içerik üretmem için motive edici olacaktır.

☕ Bana Bir Kahve Ismarla

    Bir yanıt yazın

    29 Aralık 2025

    Sitenizin Arka Kapısını Kilitleyin: xmlrpc.php Tehlikesi ve Çözümü

    WordPress sitenizi kurdunuz, temanızı seçtiniz ve güvenlik eklentilerinizi yüklediniz. Peki ya sitenizin arka kapısı, yani xmlrpc.php ne durumda? Çoğu site sahibinin varlığından bile haberdar olmadığı, ancak […]
    21 Aralık 2025

    WooCommerce için Ülkeye Göre Otomatik Para Birimi Değiştirme (Manuel Fiyat)

    E-ticaret sitelerinde yurt dışına satış yaparken en büyük dertlerden biri fiyatlandırmadır. Piyasadaki çoğu “Currency Switcher” (Para Birimi Değiştirici) eklentisi, fiyatı o anki kura göre otomatik çarpar. […]
    21 Aralık 2025

    Eklenti Çöplüğüne Son: WooCommerce Vitrin ve Fırsat Alanlarını Kodla Yönetin

    Standart WooCommerce bileşenleri (Son Eklenenler, Çok Satanlar vb.) çoğu zaman işimizi görse de, e-ticaret projelerinde sıklıkla daha spesifik alanlara ihtiyaç duyarız. “Editörün Seçimi“, “Haftanın Yıldızları” veya […]