İçindekiler
- 1 KVKK/GDPR ile WordPress & WooCommerce Sitelerin Gerçek Yüzü
- 2 KVKK/GDPR Perspektifinden WordPress & WooCommerce
- 3 Silme mi, Anonimleştirme mi? Hukuki ve Teknik Farklar
- 4 WordPress Çekirdek Araçlarıyla KVKK Uyumlu Veri Yönetimi
- 5 WooCommerce’de Müşteri Verisini Silme ve Anonimleştirme
- 6 Özel Eklentiler, Loglar ve Yedekler: Genellikle Unutulan Veriler
- 7 Adım Adım KVKK/GDPR Uyumlu WordPress & WooCommerce Temizlik Planı
- 8 DCHost Tarafında KVKK/GDPR’a Uygun Hosting Desteği
- 9 Sonuç ve Yol Haritanız
KVKK/GDPR ile WordPress & WooCommerce Sitelerin Gerçek Yüzü
WordPress veya WooCommerce ile çalışan bir siteyi yönettiğiniz anda, teknik olarak sadece bir içerik yönetim sistemi kullanmıyorsunuz; aynı zamanda KVKK ve GDPR anlamında ciddi sorumluluklar üstlenen bir veri sorumlusu haline geliyorsunuz. Müşteri kayıtları, sipariş geçmişi, IP adresleri, loglar, e-posta yedekleri… Hepsi hukuken kişisel veri sayılabilecek bilgiler içeriyor.
Bu rehberde, WordPress ve özellikle WooCommerce tabanlı e-ticaret sitelerinde, KVKK/GDPR çerçevesinde veriyi nasıl sileceğinizi, ne zaman silmek yerine anonimleştirmeniz gerektiğini ve log ile yedekler gibi genelde unutulan alanları nasıl yöneteceğinizi adım adım ele alacağız. Buradaki amaç, teorik hukuk anlatmak değil; gerçek bir WordPress/WooCommerce sitesinde uygulanabilir bir temizlik ve anonimleştirme planı ortaya koymak.
DCHost tarafında pek çok müşterimizin KVKK uyum sürecinde aynı soruları sorduğunu görüyoruz: “Siparişi tamamen silersem muhasebe açısından sorun olur mu?”, “Veri sahibi talep ederse logları da silmeli miyim?”, “Yedeklerdeki veriyi nasıl yöneteceğim?”. Bu rehber, tam da bu pratik sorulara teknik ve uygulanabilir cevaplar sunmak için hazırlandı.
KVKK/GDPR Perspektifinden WordPress & WooCommerce
Roller: Kim veri sorumlusu, kim veri işleyen?
Önce rolleri netleştirelim:
- Veri sorumlusu: WordPress/WooCommerce sitesinin sahibi olan şirket veya gerçek kişi (genelde siz).
- Veri işleyen: Hosting sağlayıcınız (örneğin DCHost), e-posta servisleri, üçüncü parti entegrasyonlar.
WordPress ya da WooCommerce sadece bir yazılım; kendi başına veri sorumlusu değil. Dolayısıyla hangi verinin ne kadar süre tutulacağı, ne zaman silineceği veya anonimleştirileceği kararı size ait. Biz DCHost tarafında ise bu kararları uygulayabilmeniz için altyapıyı (log saklama süreleri, yedekleme stratejileri, veri yerelleştirme vb.) sağlamaktan sorumluyuz.
WordPress üzerinde tipik kişisel veri kategorileri
WordPress ve WooCommerce kurulu bir sitede standarda yakın tüm kurulumlarda şu tip veri kümeleri bulunur:
- Kullanıcı hesapları: İsim, soyisim, e-posta adresi, IP adresi, kullanıcı adı.
- WooCommerce sipariş verileri: Fatura/teslimat adresi, telefon numarası, e-posta, sipariş içeriği, IP, kullanıcı ajanı.
- Yorumlar: İsim, e-posta, IP adresi, yorum içeriği.
- Form gönderimleri (iletişim formları, teklif formları vb.): Ad-soyad, şirket bilgisi, telefon, e-posta ve serbest metin alanları.
- Loglar: Erişim logları, hata logları, güvenlik eklentisi logları, ödeme hata kayıtları.
- Yedekler: Yukarıdaki tüm verilerin anlık kopyaları.
Bunların bir kısmı doğrudan (ad, e-posta), bir kısmı dolaylı (IP, kullanıcı ajanı) kişisel veri niteliğinde. KVKK/GDPR bu veriler üzerinde erişim, düzeltme, silme, kısıtlama gibi haklar tanıyor. Dolayısıyla sitenizde bu hakları teknik olarak kullanabilir hale gelmeniz gerekiyor.
Silme mi, Anonimleştirme mi? Hukuki ve Teknik Farklar
Hukuki bakış: Ne zaman silmeli, ne zaman anonimleştirmeli?
KVKK ve GDPR, veri sahibine “unutulma hakkı” tanıyor. Ancak bu hak mutlak değil. Örneğin:
- Vergi mevzuatı gereği, faturaya esas verileri belirli bir süre saklamak zorundasınız.
- Olası uyuşmazlıklar (iade davaları, garanti süreçleri vb.) için sipariş kayıtlarını tamamen yok edemeyebilirsiniz.
Bu nedenle pratikte şu model kullanılır:
- Silme: Artık hiçbir hukuki dayanak kalmadığında (müşteriyle ilişkiniz tamamen bitmiş, saklama süresi dolmuş, kaydı tutmayı gerektiren başka bir zorunluluk yoksa).
- Anonimleştirme: Hukuki veya muhasebesel sebeplerle siparişi/satışı kayıtlarda tutmanız gerekirken, kişisel tanımlayıcı alanları geri döndürülemez şekilde anonim hale getirmek istediğinizde.
Anonimleştirme, özellikle WooCommerce siparişlerinde çok kullanışlıdır: Sipariş toplamlarını ve ürün istatistiklerini korur, müşteriyi tanımlayan alanları ortadan kaldırır.
Teknik tanımlar: Silme, anonimleştirme, takma adlaştırma
- Silme: Verinin veritabanından, dosya sisteminden ve makul ölçüde yedeklerden geri döndürülemez şekilde kaldırılması.
- Anonimleştirme: Verinin herhangi bir kişiyle ilişkilendirilemeyecek hale getirilmesi (örneğin ad-soyad yerine “Anonim Müşteri”, telefon yerine “0000000000”). Geri dönüş yolu olmamalı.
- Pseudonymization (takma adlaştırma): Gerçek kişiyle bağını koparmak için ek bir anahtar gerektiren maskeleme; bu anahtar başka yerde saklanıyorsa, hukuken hâlâ kişisel veri sayılır.
Özellikle log ve IP kayıtları tarafında, KVKK ve GDPR için log anonimleştirme, IP maskeleme ve pseudonymization yöntemlerini anlattığımız detaylı rehberle bu kavramları daha teknik düzeyde birleştirebilirsiniz.
Yedekler ve saklama süreleri
“Silme” denildiğinde çoğu kişi sadece aktif veritabanını düşünüyor. Oysa verinin en inatçı olduğu yer, yedeklerdir. Bu yüzden:
- Yedekleriniz için net bir saklama süresi politikası belirlemelisiniz.
- Bu süre dolduğunda yedeklerin otomatik olarak silinmesini sağlamalısınız.
Bu konuda yedek saklama süresi nasıl belirlenir, KVKK, GDPR ve maliyet dengesini anlattığımız rehber ile iyi bir başlangıç yapabilirsiniz. Orada anlattığımız prensipler, WordPress/WooCommerce yedekleriniz için de birebir geçerlidir.
WordPress Çekirdek Araçlarıyla KVKK Uyumlu Veri Yönetimi
Kişisel veri ihracı ve silme araçları
WordPress çekirdeği, GDPR sonrası iki önemli araç kazandı:
- Araçlar > Kişisel veriyi dışa aktar
- Araçlar > Kişisel veriyi sil
Bu araçlar şu senaryolarda kullanılır:
- Bir kullanıcı, kendisiyle ilgili hangi verileri tuttuğunuzu görmek isterse (erişim hakkı) “dışa aktar” aracıyla tüm verileri derlenip e-posta ile gönderilebilir.
- Kullanıcı hesabının ve ilişkili verilerin silinmesini talep ederse, “kişisel veriyi sil” aracıyla bu talebi teknik olarak uygulayabilirsiniz.
Bu araçlar hem kullanıcı hesaplarını, hem de e-posta adresi üzerinden ilişkilendirilebilen yorumları ve bazı eklenti verilerini kapsar. WooCommerce gibi popüler eklentiler bu araçlarla entegre çalışacak şekilde özel veri tanımlayıcıları ekler.
Kullanıcı silme vs. kullanıcıyı anonimleştirme
WordPress’te bir kullanıcı hesabını silerken şu iki seçenekle karşılaşırsınız:
- İçerikleri başka bir kullanıcıya devretmek
- İçerikleri de kullanıcıyla birlikte silmek
KVKK açısından genelde izlenen pratik yaklaşım şudur:
- Hukuki/muhasebesel gerekçelerle tamamen silemediğiniz içerikler varsa (blog yazarı, editör vb.), bu içerikleri genel bir “Sistem Kullanıcısı”na devredip gerçek hesabı silebilirsiniz.
- Yorumlarda ise isim, e-posta ve IP’nin anonimleştirilmesi çoğu durumda yeterlidir.
Bu işlemleri otomatikleştirmek için bazı güvenilir gizlilik eklentileri kullanılabilir; ancak hangi eklentiyi kullanırsanız kullanın, önce staging ortamında deneme yapmanızı ve veritabanı yedeği almanızı öneririz.
Yorum verilerini anonimleştirme
Yorumlarda sıkça unutulan veri alanları şunlardır:
- Yazar adı
- Yazar e-postası
- Yazar IP adresi
- User agent bilgisi
Tüm yorumları değil, sadece belirli bir kullanıcıya ait yorumları anonimleştirmek için, önce ilgili kullanıcının e-posta adresini tespit edip ardından hedefli bir SQL sorgusu çalıştırabilirsiniz (önce yedek almayı unutmayın):
UPDATE wp_comments
SET comment_author = 'Anonim Kullanıcı',
comment_author_email = '[email protected]',
comment_author_url = '',
comment_author_IP = ''
WHERE comment_author_email = '[email protected]';
Tablo önekiniz wp_ değilse, ona göre güncellemeniz gerekir. Bu işlem, yorum içeriğini korurken kişiyi tanımlayan alanları ortadan kaldırır.
WooCommerce’de Müşteri Verisini Silme ve Anonimleştirme
WooCommerce > Accounts & Privacy ayarları
WooCommerce, KVKK/GDPR uyumunda işinizi ciddi anlamda kolaylaştıran yerleşik ayarlara sahip. Yönetim panelinde;
WooCommerce > Settings > Accounts & Privacy sekmesine gittiğinizde şu kritik seçenekleri göreceksiniz:
- Account erasure requests: Müşteri hesabı silme talebi geldiğinde, ilişkili içeriklerin (siparişler) nasıl ele alınacağını belirler.
- Personal data removal: Hesap silindiğinde siparişlerle ilişkili kişisel verilerin de silinip silinmeyeceğini kontrol eder.
- Personal data retention: Tamamlanmış, iptal edilmiş, başarısız veya bekleyen siparişler için saklama sürelerini (x gün/ay/yıl) tanımlarsınız.
Burada belirlediğiniz süreler dolduğunda WooCommerce’in bakım görevleri, ilgili siparişlerdeki kişisel verileri otomatik olarak anonimleştirebilir. Bu sayede “unutulma hakkı”nı operasyonel iş yükü yaratmadan uygulamanız mümkün olur.
Sipariş verilerinde neleri anonimleştirmelisiniz?
Tipik bir WooCommerce siparişinde şu alanlar kişisel veri niteliğindedir:
- Billing First Name / Last Name
- Billing Company
- Billing Address 1/2, City, Postcode, Country
- Billing Phone, Billing Email
- Shipping First Name / Last Name ve diğer adres alanları
- Müşteri notları (özellikle serbest metin alanları)
- IP adresi ve user agent
KVKK açısından bakıldığında, şu senaryo sık görülür:
- Muhasebe için sipariş toplamı, KDV, ürün bazlı satış verileri tutulmak zorundadır.
- Müşteriyi tanımlayan ad-soyad, telefon, e-posta gibi veriler ise belirli bir sürenin sonunda anonimleştirilebilir.
WooCommerce’in kendi anonimleştirme mekanizması bu alanları güvenli varsayılanlarla doldurur; ancak ekstra kontrol için veritabanı üzerinde manuel temizlik yapmak isteyebilirsiniz.
Örnek SQL ile sipariş anonimleştirme (ileri düzey)
Bazı ajans ve geliştiriciler, yasal saklama süresi dolan eski siparişleri toplu olarak anonimleştirmek isteyebiliyor. Örneğin 3 yıldan eski tüm tamamlanmış siparişlerde kişisel alanları sıfırlamak için (önce mutlaka tam yedek alın):
UPDATE wp_postmeta pm
JOIN wp_posts p ON pm.post_id = p.ID
SET pm.meta_value = CASE pm.meta_key
WHEN '_billing_first_name' THEN 'Anonim'
WHEN '_billing_last_name' THEN 'Müşteri'
WHEN '_billing_company' THEN ''
WHEN '_billing_address_1' THEN ''
WHEN '_billing_address_2' THEN ''
WHEN '_billing_city' THEN ''
WHEN '_billing_postcode' THEN ''
WHEN '_billing_phone' THEN ''
WHEN '_billing_email' THEN ''
WHEN '_shipping_first_name' THEN 'Anonim'
WHEN '_shipping_last_name' THEN 'Müşteri'
WHEN '_shipping_company' THEN ''
WHEN '_shipping_address_1' THEN ''
WHEN '_shipping_address_2' THEN ''
WHEN '_shipping_city' THEN ''
WHEN '_shipping_postcode' THEN ''
ELSE pm.meta_value
END
WHERE p.post_type = 'shop_order'
AND p.post_status IN ('wc-completed','wc-processing')
AND p.post_date < DATE_SUB(NOW(), INTERVAL 3 YEAR)
AND pm.meta_key IN (
'_billing_first_name','_billing_last_name','_billing_company',
'_billing_address_1','_billing_address_2','_billing_city','_billing_postcode',
'_billing_phone','_billing_email',
'_shipping_first_name','_shipping_last_name','_shipping_company',
'_shipping_address_1','_shipping_address_2','_shipping_city','_shipping_postcode'
);
Bu sorgu, 3 yıldan eski siparişlerde sadece tanımlayıcı alanları değiştirir; sipariş tutarı, ürünler ve muhasebesel veriler korunur. Tablo öneklerini kendi yapınıza göre güncellemeyi ve sorguyu önce staging ortamında test etmeyi unutmayın.
Sipariş arşivleme ve veritabanı performansı
Eski siparişleri tamamen silmek yerine, anonimleştirip arşivlemek hem KVKK uyumu, hem de performans açısından daha dengeli bir çözümdür. Bu konuda WooCommerce sipariş arşivleme ve veritabanı temizliği rehberimizde performans tarafını detaylı anlattık. KVKK perspektifinden baktığınızda, oradaki arşivleme stratejilerini saklama süresi ve anonimleştirme kararıyla birleştirmeniz yeterli.
Özel Eklentiler, Loglar ve Yedekler: Genellikle Unutulan Veriler
Form eklentileri (Contact Form 7, Gravity, WPForms vb.)
Gerçekte en çok kişisel veriyi toplayan alanlardan biri, iletişim ve teklif formlarıdır. Çoğu zaman:
- Form verileri veritabanında özel tablolar halinde saklanır.
- Aynı veriler, e-posta yoluyla size iletilir ve posta kutunuzda da kalır.
KVKK/GDPR uyumlu olmak için şunları yapmalısınız:
- Form eklentinizin veritabanında ne kadar süre veri tuttuğunu kontrol edin.
- Belirli aralıklarla eski form kayıtlarını silen veya anonimleştiren bir görev planlayın.
- E-posta tarafında da arşiv ve saklama politikalarınızı netleştirin.
E-posta perspektifini daha detaylı ele almak isterseniz, KVKK/GDPR uyumlu e-posta arşivleme ve saklama politikaları rehberimiz size iyi bir çerçeve sunacaktır.
Güvenlik eklentileri, erişim logları ve IP adresleri
WordPress güvenlik eklentileri çoğunlukla şu verileri toplar ve saklar:
- Giriş denemeleri (kullanıcı adı, IP, zaman damgası)
- Şüpheli istekler (IP, URL, user agent)
- WAF (Web Application Firewall) logları
Bu logların süresiz tutulması KVKK ile çelişebilir. Burada ideal olan, DCHost tarafındaki sunucu log politikalarınız ile WordPress içindeki güvenlik log politikalarınızı uyumlu hale getirmektir. Loglarda IP maskeleme, belirli sürenin üzerinde log tutmama gibi teknikleri, yukarıda link verdiğimiz log anonimleştirme rehberindeki yöntemlerle kolayca uygulayabilirsiniz.
Yedekler: Silinen veri gerçekten gitmiş mi?
Aktif veritabanından bir kullanıcıyı veya siparişi sildiğinizde, bu veri son alınan yedeklerde hâlâ duruyor olabilir. Uygulanabilir strateji şudur:
- Örneğin 30 günlük bir yedek saklama süresi belirleyin.
- Veri silme talebini kayda alın ve 30 gün sonunda, ilgili verinin hiçbir yedekte kalmadığından emin olun.
- Felaket kurtarma senaryosunda eski bir yedeği geri yüklemeniz gerekirse, geri yükleme sonrası ilgili veri silme/anonimleştirme işlemlerini tekrar çalıştırın.
Bu stratejiyi, KVKK ve GDPR uyumlu hosting nasıl kurulur rehberimizde anlattığımız veri silme ve loglama prensipleriyle birlikte düşünmek önemli.
Adım Adım KVKK/GDPR Uyumlu WordPress & WooCommerce Temizlik Planı
1. Veri envanteri çıkarın
Önce nerede hangi veriyi tuttuğunuzu bilin. Küçük bir tablo hazırlayabilirsiniz:
- WordPress kullanıcıları – wp_users, wp_usermeta – Süre: aktif kullanıcı oldukça
- WooCommerce siparişleri – wp_posts, wp_postmeta – Süre: x yıl
- Form kayıtları – eklenti tabloları – Süre: x ay
- Güvenlik logları – eklenti tabloları / dosya logları – Süre: x gün
- Sunucu erişim logları – hosting logları – Süre: x gün/ay
- Yedekler – object storage / lokal disk – Süre: x gün/ay
Bu tabloyu, şirketinizin KVKK kayıt envanteri ile uyumlu hale getirin.
2. Saklama sürelerini belirleyin
Her veri kategorisi için şu soruyu sorun: “Bu veriye gerçekten ne kadar süre ihtiyacım var ve hangi mevzuat bunu zorunlu kılıyor?”. Örneğin:
- Siparişler: Vergi ve ticaret kanunları gereği genelde 5-10 yıl arası saklama zorunluluğu olur.
- Giriş logları: Güvenlik amaçlı 90 gün – 1 yıl arasında makul bir süre seçilebilir.
- Form kayıtları: Genelde 6-24 ay arası iş ihtiyacına göre belirlenir.
Bu süreleri WooCommerce’in Accounts & Privacy ayarlarına, form eklentilerinizin ayarlarına ve hosting tarafında log/yedek politikalarınıza işleyin. Veri merkezinin bulunduğu ülke ve veri yerelleştirme gereklilikleri hakkında daha geniş bir çerçeveye ihtiyacınız varsa, KVKK/GDPR uyumlu hosting seçimi ve veri yerelleştirme rehberimizi mutlaka okuyun.
3. WordPress çekirdek ve WooCommerce gizlilik ayarlarını yapılandırın
Bu adım genelde atlanıyor ama KVKK uyumu için kritik:
- WordPress’te bir gizlilik politikası sayfası oluşturun ve Ayarlar > Gizlilik bölümünde bunu tanımlayın.
- WooCommerce > Settings > Accounts & Privacy altında:
- “Allow personal data to be removed in bulk” benzeri seçenekleri etkinleştirin.
- Sipariş saklama sürelerini (completed, cancelled, failed, pending) gerçekçi değerlerle doldurun.
- Konuk siparişlerinin ne kadar süre sonra anonimleştirileceğini belirleyin.
Bunlar, “manuel temizlik” ihtiyacını büyük ölçüde azaltacaktır.
4. Form, güvenlik ve analitik eklentilerini gözden geçirin
Her eklenti için şu soruları cevaplayın:
- Hangi kişisel veriyi topluyor?
- Bu veri nerede saklanıyor (özel tablo, wp_options, dosya, üçüncü parti API)?
- Silme/anonimleştirme için yerleşik bir araç sağlıyor mu?
Eğer eklentinin kendi içinde saklama süresi ayarı yoksa, periyodik olarak çalışacak bir cron job ile eski kayıtları temizleyebilirsiniz. Host tarafında cron veya gerçek sistem cron kullanımı için WordPress özelinde wp-cron yerine gerçek cron kullanma rehberimiz size sağlam bir teknik zemin sağlar; KVKK açısından da zamanlanan temizlik görevlerini daha güvenilir hale getirir.
5. Log ve yedek politikalarını hosting ile uyumlu hale getirin
Son adım, uygulama katmanında yaptıklarınızı altyapı ile uyumlu hale getirmek:
- Sunucu erişim logları için saklama süresini belirleyin ve DCHost paneliniz veya VPS yapılandırmanız üzerinden uygulayın.
- Güvenlik logları için otomatik döngü (rotate) ve silme mekanizması kurun.
- Yedekler için 3-2-1 benzeri bir strateji kullanıyorsanız, saklama sürelerini KVKK/GDPR politikalarınızla eşleyin.
Bu konuda, sadece WordPress’e değil tüm altyapınıza bakan daha geniş bir çerçeve isterseniz, KVKK ve GDPR uyumlu hosting nasıl kurulur yazımızda loglama ve silme stratejilerini çok daha derinlemesine anlattık.
DCHost Tarafında KVKK/GDPR’a Uygun Hosting Desteği
WordPress ve WooCommerce’de veri silme/anonimleştirme işin uygulama tarafı. Bir de bunun altyapı, veri yerelleştirme, log ve yedek boyutu var. DCHost ekibi olarak müşterilerle çalışırken genelde şu başlıklarda destek veriyoruz:
- Veri yerelleştirme ihtiyaçlarına göre Türkiye veya Avrupa veri merkezlerinde barındırma seçenekleri.
- Paylaşımlı hosting, yönetilen WordPress, VPS, dedicated ve colocation senaryolarında log saklama sürelerinin ve yedekleme politikalarının özelleştirilmesi.
- WooCommerce mağazaları için, hem performans hem de KVKK açısından uygun veritabanı ve yedekleme mimarisi önerileri.
Zaten WooCommerce odaklı altyapı planlama konularını WooCommerce kapasite planlama rehberimizde ve yüksek erişilebilir WordPress & WooCommerce küme mimarisi yazımızda performans açısından detaylandırmıştık. KVKK tarafında yapmanız gerekenler de bu mimarilerin üzerine, ek birkaç politika ve otomasyon ayarı olarak oturuyor.
Sonuç ve Yol Haritanız
KVKK ve GDPR uyumu, WordPress veya WooCommerce kullanmaktan vazgeçmenizi gerektiren bir yük değil; sadece veriye daha disiplinli bakmanızı zorunlu kılıyor. Doğru yapılandırılmış saklama süreleri, WooCommerce’in Accounts & Privacy ayarları, WordPress’in yerleşik veri ihracı/silme araçları ve düzenli çalışan temizlik cron görevleri ile, orta ölçekli bir e-ticaret sitesinde bile veri silme ve anonimleştirme sürecini oldukça yönetilebilir hale getirmek mümkün.
Buradan sonra atabileceğiniz somut adımlar net:
- Önce veri envanterinizi çıkarın ve saklama sürelerini belirleyin.
- WooCommerce ve WordPress gizlilik ayarlarını bu politikalara göre güncelleyin.
- Form, güvenlik ve analitik eklentilerinizde hangi verinin ne kadar tutulduğunu kontrol edin.
- Hosting (log ve yedek) politikalarınızı şirketinizin KVKK/GDPR dokümanlarıyla uyumlu hale getirin.
Eğer altyapı tarafında log saklama, yedekleme, veri yerelleştirme veya WooCommerce performansı ile KVKK uyumunu aynı anda düşünmeniz gerekiyorsa, DCHost ekibi olarak hem hosting mimarisi hem de pratik uygulama tarafında bu yolculuğu sizinle planlayabiliriz. Böylece hem denetimlerden çekinmeyecek, hem de müşterilerinize gönül rahatlığıyla “verilerinize saygı duyuyoruz” diyebileceğiniz bir WordPress/WooCommerce altyapısına sahip olursunuz.
