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.

    Bir yanıt yazın

    9 Aralık 2025

    WooCommerce Sepette Adet Değişince Otomatik Güncelleme

    WooCommerce’in varsayılan çalışma mantığında, kullanıcı sepet sayfasında ürün adetini değiştirir ama sepet otomatik olarak güncellenmez. Bunun yerine “Sepeti Güncelle” butonuna manuel olarak basmak gerekir. Bu durum […]