WooCommerce tabanlı e-ticaret sitelerinde zamanla ürünlerin yanlışlıkla birden fazla kez yüklenmesi sık karşılaşılan bir durumdur. Özellikle aynı SKU (stok kodu) ile eklenen ürünlerin siteyi karmaşık hale getirmesi hem SEO hem kullanıcı deneyimi açısından sorun yaratır.
Bu rehberde, aynı SKU'ya sahip ürünlerden yalnızca birini bırakıp, diğerlerini topluca silmeyi öğreneceksiniz. Üstelik hiçbir teknik bilgiye ihtiyaç duymadan, adım adım işlemi gerçekleştirebileceksiniz.
Örnek durum:
SKU: ABC-123
2 veya daha fazla ürün bu SKU ile eklenmiş.
Sadece bir tanesi (örneğin en yenisi) kalmalı, diğerleri silinmeli.
WordPress sitenizde güvenli bir şekilde özel kodlar çalıştırmak için “Code Snippets” adlı eklentiden faydalanacağız.
WordPress admin paneline girin.
Eklentiler > Yeni Ekle sekmesine tıklayın.
Arama kutusuna Code Snippets yazın.
İlk çıkan eklentiyi (geliştirici: Code Snippets Pro) yükleyin ve etkinleştirin.
Sol menüden Snippets > Yeni Ekle‘ye tıklayın.
Başlığa şunu yazın: Çift SKU Temizleyici
Aşağıdaki kodu kopyalayıp yapıştırın:
add_action('admin_init', 'delete_duplicate_sku_products_except_newest');
function delete_duplicate_sku_products_except_newest() {
if (!current_user_can('administrator')) {
return;
}
// Bu işlemi sadece bir defa çalıştırmak için tetik kontrolü
if (isset($_GET['run_duplicate_cleaner'])) {
global $wpdb;
$results = $wpdb->get_results("
SELECT meta_value as sku, COUNT(*) as total
FROM {$wpdb->prefix}postmeta
WHERE meta_key = '_sku'
GROUP BY meta_value
HAVING total > 1
");
foreach ($results as $row) {
$sku = $row->sku;
$products = get_posts(array(
'post_type' => 'product',
'posts_per_page' => -1,
'orderby' => 'date',
'order' => 'DESC', // En yeni ürün kalsın
'meta_query' => array(
array(
'key' => '_sku',
'value' => $sku
)
)
));
$keep = true;
foreach ($products as $product) {
if ($keep) {
$keep = false;
continue;
}
wp_delete_post($product->ID, true); // Kalıcı sil
}
}
wp_die('Çift SKU\'lu eski ürünler başarıyla silindi.');
}
}
Kodun çalışacağı alanı: “Only run in administration area” olarak seçin.
Snippet’i “Etkinleştir ve Kaydet” diyerek aktif hale getirin.
Tarayıcınızda aşağıdaki gibi bir URL’ye gidin:
https://siteniz.com/wp-admin/?run_duplicate_cleaner=1
???? Bu bağlantıyı açtığınızda sistem otomatik olarak aynı SKU’ya sahip tüm çift ürünleri tarar ve sadece en yenisini bırakıp, diğerlerini kalıcı olarak siler.
Snippet görevini tamamladığında sayfada "Çift SKU'lu eski ürünler başarıyla silindi" mesajını göreceksiniz.
Ardından Code Snippets’taki ilgili kodu devre dışı bırakabilir veya silebilirsiniz.
Böylece kod tekrar çalışmaz ve güvenlik açık bırakılmaz.
functions.php yerine Code Snippets ile yönetilmesi daha stabil.
Yalnızca yönetici panelinden erişilebilir.
Tetikleyici URL olmadan kendiliğinden çalışmaz.
Siteyi yavaşlatmaz veya çökertmez.
İşleme başlamadan önce tam yedek almanızı öneririm (örn: UpdraftPlus, Duplicator).
Çok fazla ürün varsa işlem birkaç saniye sürebilir, bekleyin.
Bu işlem basit ürünler içindir, varyasyonlar için ek kontrol gerekebilir.
Bu rehber sayesinde sitenizdeki çift ürün problemini otomatik ve güvenli bir şekilde çözebilirsiniz. Artık aynı SKU’ya sahip fazlalık ürünlerden kurtuldunuz ve WooCommerce mağazanız daha düzenli çalışacak.
Yorumlarda belirtebilir veya bizimle iletişime geçebilirsiniz. Yardımcı olmaktan memnuniyet duyarız!