WooCommerce CLI Nedir: wp wc ile Temel Kullanım

E-ticaret sitelerini yönetmek, özellikle büyük kataloglarla çalışırken gerçekten yorucu olabiliyor. Yüzlerce ürünü güncellemek, siparişleri toplu işlemek ya da müşteri verilerini düzenlemek için WooCommerce admin panelinde tıklamalar arasında kaybolmak yerine terminali açıp birkaç satır komutla işi bitirmek… İşte WP-CLI’ın WooCommerce entegrasyonu tam olarak bunu sağlıyor.

WooCommerce CLI Nedir?

WP-CLI, WordPress’i komut satırından yönetmek için geliştirilmiş resmi araçtır. WooCommerce ise bu sisteme kendi komut setini entegre etmiş ve wp wc komutu altında kapsamlı bir CLI arayüzü sunmuştur. Bu entegrasyon sayesinde ürünler, siparişler, müşteriler, kuponlar ve mağaza ayarları gibi neredeyse her şeyi terminal üzerinden yönetebilirsiniz.

WooCommerce CLI’ın temel avantajları:

  • Toplu işlemler için ciddi zaman tasarrufu sağlar
  • Betiklerle otomatikleştirilebilir görevler oluşturabilirsiniz
  • Cron job’larla zamanlanmış görevler kurabilirsiniz
  • Sunucuya SSH ile bağlıyken bile tam kontrol elinizde olur
  • Admin paneli yüklemek zorunda kalmadan işlemleri tamamlayabilirsiniz

WooCommerce CLI, aslında WooCommerce REST API’si üzerine inşa edilmiştir. Yani yaptığınız her işlem arka planda API çağrıları yapıyor ve bu sayede API’nin sunduğu tüm özelliklere CLI üzerinden erişebiliyorsunuz.

Kurulum ve Ön Koşullar

WooCommerce CLI’ı kullanmaya başlamadan önce birkaç şeyin hazır olması gerekiyor.

Gereksinimler:

  • WP-CLI 2.0 veya üzeri kurulu olmalı
  • WooCommerce eklentisi aktif olmalı (3.0+)
  • WordPress kullanıcınızın gerekli izinlere sahip olması gerekiyor

WP-CLI’ın kurulu olup olmadığını kontrol etmek için:

wp --version

WooCommerce’in aktif olduğunu ve CLI komutlarının mevcut olduğunu doğrulamak için:

wp wc --help

Bu komut size kullanılabilir tüm WooCommerce alt komutlarının listesini verecektir. Eğer “Error: ‘wc’ is not a registered command” gibi bir hata alıyorsanız WooCommerce eklentisinin aktif olmadığını anlayabilirsiniz.

Kimlik Doğrulama

WooCommerce CLI komutları çalıştırırken bir WordPress kullanıcısı belirtmeniz gerekiyor. Bunun için --user parametresini kullanıyorsunuz:

wp wc product list --user=admin

Ya da her seferinde yazmamak için shell ortam değişkeni olarak tanımlayabilirsiniz:

export WP_CLI_DEFAULT_USER=admin

Ürün Yönetimi: wp wc product

Ürün yönetimi muhtemelen en sık kullanacağınız alan olacak. Ürün listeleme, oluşturma, güncelleme ve silme işlemlerini inceleyelim.

Ürün Listeleme

wp wc product list --user=admin --format=table

Bu komut mağazadaki tüm ürünleri listeler. Çıktıyı farklı formatlarda alabilirsiniz:

  • –format=table: Okunabilir tablo formatı
  • –format=json: JSON çıktısı, başka betiklerle işlemek için ideal
  • –format=csv: CSV formatı, Excel’e aktarmak için kullanışlı
  • –format=ids: Sadece ID’leri listeler

Belirli kriterlere göre filtrelemek için:

wp wc product list --user=admin --status=publish --per_page=50 --format=table

Stok durumuna göre filtrelemek için gerçek dünya senaryosu düşünelim: Stoğu tükenmiş ürünleri bulmak istiyorsunuz:

wp wc product list --user=admin --stock_status=outofstock --format=csv > out_of_stock.csv

Ürün Detaylarını Görme

Belirli bir ürünün detaylarını görmek için:

wp wc product get 123 --user=admin --format=json

Bu size ürünün tüm meta verilerini JSON formatında verir. Özellikle otomasyon betikleri yazarken hangi alanların mevcut olduğunu görmek için çok işe yarıyor.

Yeni Ürün Oluşturma

wp wc product create --user=admin 
  --name="Yeni Ürün Adı" 
  --type=simple 
  --regular_price=99.90 
  --description="Ürün açıklaması buraya gelecek" 
  --status=publish

Ürün oluştururken kullanılan parametreler:

  • –name: Ürün adı
  • –type: simple, variable, grouped, external
  • –regular_price: Normal fiyat
  • –sale_price: İndirimli fiyat
  • –description: Uzun açıklama
  • –short_description: Kısa açıklama
  • –status: publish, draft, pending
  • –manage_stock: true/false stok yönetimi
  • –stock_quantity: Stok miktarı
  • –sku: Stok kodu

Ürün Güncelleme

Mevcut bir ürünü güncellemek için update komutunu kullanıyoruz:

wp wc product update 123 --user=admin --regular_price=149.90 --sale_price=99.90

Gerçek dünya senaryosu: Bir kampanya döneminde 50’den fazla ürünün fiyatını güncellemek gerekiyor. Bunu elle yapmak saatler alır. Ürün ID’lerini bir dosyaya kaydedip döngüyle güncelleyebilirsiniz:

# product_ids.txt dosyasındaki her ID için fiyat güncellemesi yap
while IFS= read -r product_id; do
  wp wc product update "$product_id" --user=admin --sale_price=0 --status=publish
  echo "Ürün $product_id güncellendi"
done < product_ids.txt

Ürün Silme

wp wc product delete 123 --user=admin --force=true

--force=true parametresi olmadan ürün çöp kutusuna gider. Kalıcı silmek için force parametresi şart.

Sipariş Yönetimi: wp wc order

Sipariş yönetimi e-ticaret operasyonlarının belkemiğidir. CLI ile sipariş işlemleri özellikle raporlama ve toplu durum güncellemeleri için çok kullanışlı.

Sipariş Listeleme

wp wc order list --user=admin --status=processing --format=table

Belirli tarih aralığındaki siparişleri listelemek:

wp wc order list --user=admin 
  --after="2024-01-01T00:00:00" 
  --before="2024-01-31T23:59:59" 
  --format=csv > ocak_siparisleri.csv

Sipariş durumları:

  • pending: Bekleyen sipariş
  • processing: İşleniyor
  • on-hold: Beklemede
  • completed: Tamamlandı
  • cancelled: İptal edildi
  • refunded: İade edildi
  • failed: Başarısız

Sipariş Detayı

wp wc order get 456 --user=admin --format=json

Sipariş Durumu Güncelleme

Tek bir siparişin durumunu güncellemek:

wp wc order update 456 --user=admin --status=completed

Toplu sipariş durumu güncellemesi için pratik bir senaryo: Her gün gece yarısı “processing” durumundaki siparişlerin listesini CSV’ye aktaran ve belirli koşulları sağlayanları “completed” yapan bir betik:

#!/bin/bash
# Tüm "processing" siparişlerin ID'lerini al
ORDER_IDS=$(wp wc order list --user=admin --status=processing --format=ids)

for order_id in $ORDER_IDS; do
  # Her siparişi tamamlandı olarak işaretle
  wp wc order update "$order_id" --user=admin --status=completed
  echo "Sipariş #$order_id tamamlandı olarak işaretlendi"
done

Bu betiği /etc/cron.d/ altına koyup otomatikleştirebilirsiniz.

Müşteri Yönetimi: wp wc customer

Müşteri verileriyle çalışmak, özellikle CRM entegrasyonları veya müşteri segmentasyonu için sık ihtiyaç duyulan bir alan.

Müşteri Listeleme

wp wc customer list --user=admin --format=table

Belirli bir rol veya ülkeye göre filtrelemek:

wp wc customer list --user=admin --role=customer --format=csv > musteriler.csv

Müşteri Detayı

wp wc customer get 78 --user=admin --format=json

Bu komut müşterinin tüm bilgilerini, toplam harcamalarını ve sipariş sayısını gösterir.

Yeni Müşteri Oluşturma

wp wc customer create --user=admin 
  --email="[email protected]" 
  --first_name="Ahmet" 
  --last_name="Yilmaz" 
  --username="ahmetyilmaz" 
  --password="guclu_sifre_123"

Müşteri Siparişlerini Listeleme

Belirli bir müşteriye ait tüm siparişleri bulmak için:

wp wc order list --user=admin --customer=78 --format=table

Kupon Yönetimi: wp wc shop_coupon

Kampanya dönemlerinde toplu kupon oluşturma ve yönetme işlevi inanılmaz zaman kazandırıyor.

Kupon Listeleme

wp wc shop_coupon list --user=admin --format=table

Yeni Kupon Oluşturma

wp wc shop_coupon create --user=admin 
  --code="YILBASI2024" 
  --discount_type=percent 
  --amount=20 
  --minimum_amount=100 
  --expiry_date="2024-12-31" 
  --usage_limit=500

Kupon parametreleri:

  • –code: Kupon kodu
  • –discount_type: percent, fixed_cart, fixed_product
  • –amount: İndirim miktarı
  • –minimum_amount: Minimum sipariş tutarı
  • –maximum_amount: Maksimum sipariş tutarı
  • –expiry_date: Son kullanma tarihi (YYYY-MM-DD)
  • –usage_limit: Toplam kullanım limiti
  • –usage_limit_per_user: Kullanıcı başına kullanım limiti
  • –individual_use: true/false, diğer kuponlarla birlikte kullanım
  • –free_shipping: true/false, ücretsiz kargo

Gerçek dünya senaryosu: Yazılım şirketiniz için 100 farklı müşteriye özel kupon kodu üretmeniz gerekiyor:

#!/bin/bash
# Müşteri listesini CSV'den oku ve her biri için kupon oluştur
while IFS=, read -r customer_id email; do
  COUPON_CODE="VIP-$(echo $customer_id | tr '[:lower:]' '[:upper:]')-2024"
  wp wc shop_coupon create --user=admin 
    --code="$COUPON_CODE" 
    --discount_type=percent 
    --amount=15 
    --usage_limit_per_user=1 
    --expiry_date="2024-06-30"
  echo "Kupon oluşturuldu: $COUPON_CODE - Müşteri: $email"
done < musteriler.csv

Ürün Kategorileri: wp wc product_cat

Kategori Listeleme

wp wc product_cat list --user=admin --format=table

Yeni Kategori Oluşturma

wp wc product_cat create --user=admin 
  --name="Yeni Kategori" 
  --description="Kategori açıklaması" 
  --parent=0

Alt kategori oluşturmak için parent ID’yi belirtiyorsunuz. Önce üst kategoriyi oluşturun, sonra dönen ID ile alt kategorileri ekleyin.

Vergi Oranları: wp wc tax

Türkiye’de çalışıyorsanız KDV oranlarını CLI üzerinden yönetmek oldukça pratik.

Vergi Sınıfı Listeleme

wp wc tax list --user=admin --format=table

Yeni Vergi Oranı Oluşturma

wp wc tax create --user=admin 
  --country=TR 
  --rate=18 
  --name="KDV %18" 
  --shipping=true 
  --class=""

Ödeme Yöntemleri ve Kargo: wp wc payment_gateway ve wp wc shipping_zone

Ödeme Yöntemlerini Listeleme

wp wc payment_gateway list --user=admin --format=table

Kargo Bölgelerini Listeleme

wp wc shipping_zone list --user=admin --format=table

Belirli Kargo Bölgesinin Yöntemlerini Görme

wp wc shipping_zone_method list --user=admin --zone_id=1 --format=table

Pratik Otomasyon Senaryoları

Senaryo 1: Haftalık Stok Raporu

Her Pazartesi sabahı stok durumunu bir CSV dosyasına aktarıp e-posta ile gönderen betik:

#!/bin/bash
RAPOR_DOSYASI="/tmp/stok_raporu_$(date +%Y%m%d).csv"
SITE_PATH="/var/www/html/wordpress"

# Stok bilgilerini al
cd "$SITE_PATH"
wp wc product list --user=admin 
  --format=csv 
  --fields=id,name,sku,stock_quantity,stock_status 
  > "$RAPOR_DOSYASI"

# Raporu e-posta ile gonder
mail -s "Haftalik Stok Raporu $(date +%d/%m/%Y)" 
  -a "Content-Type: text/plain; charset=UTF-8" 
  [email protected] < "$RAPOR_DOSYASI"

echo "Stok raporu gonderildi: $RAPOR_DOSYASI"

Bu betiği crontab’a ekleyerek her Pazartesi 08:00’de çalıştırabilirsiniz:

0 8 * * 1 /usr/local/bin/stok_raporu.sh >> /var/log/stok_raporu.log 2>&1

Senaryo 2: Kampanya Fiyatlarını Sıfırlama

Kampanya bittikten sonra tüm indirimli ürünlerin sale_price alanını temizleyen betik:

#!/bin/bash
# Sale price olan tüm ürünlerin ID'lerini bul
URUN_IDS=$(wp wc product list --user=admin 
  --on_sale=true 
  --format=ids 
  --path=/var/www/html/wordpress)

echo "Toplam $(echo $URUN_IDS | wc -w) ürünün indirimi kaldırılacak..."

for urun_id in $URUN_IDS; do
  wp wc product update "$urun_id" 
    --user=admin 
    --sale_price="" 
    --path=/var/www/html/wordpress
  echo "Urun $urun_id - indirim kaldirildi"
done

echo "Islem tamamlandi!"

Hata Ayıklama ve Debug Modu

Bir komut beklediğiniz gibi çalışmıyorsa --debug flagini ekleyebilirsiniz:

wp wc product list --user=admin --debug

Bu çok daha ayrıntılı çıktı verir ve API çağrılarını, hata mesajlarını gösterir. Özellikle geliştirme ortamında sorun giderirken oldukça yararlı.

Sık karşılaşılan sorunlar:

  • “Sorry, you are not allowed to do this”: Kullanıcının yeterli yetkisi yok, admin yetkili bir kullanıcı kullanın
  • “wc” is not a registered command: WooCommerce eklentisi aktif değil
  • Could not find the post: Belirtilen ID’ye sahip kayıt bulunamadı
  • Invalid parameter: Parametre değeri yanlış formatta veya geçersiz

Performans İpuçları

Büyük mağazalarda binlerce ürün veya sipariş üzerinde işlem yaparken bazı noktalara dikkat etmek gerekiyor.

--per_page limitini kullanın: Varsayılan değer genellikle 10’dur, toplu işlemler için artırmak yerine sayfalama yapın.

--fields ile çıktıyı sınırlayın: Sadece ihtiyacınız olan alanları çekin:

wp wc product list --user=admin --fields=id,name,price --format=csv

Büyük işlemleri parçalara bölün: 10.000 ürünü tek seferde güncellemeye çalışmak yerine 500’erlik gruplar halinde işleyin ve aralarında kısa beklemeler koyun. Hem veritabanını rahatlatır hem de bir hata durumunda kaldığınız yeri bilirsiniz.

Log tutun: Toplu işlemlerde mutlaka log dosyası kullanın. Bir şeyler ters gittiğinde neyin ne zaman işlendiğini görmek hayat kurtarır.

Sonuç

wp wc komutları WooCommerce mağaza yönetimini kökten değiştiriyor. Admin panelinde saatlerce geçireceğiniz işlemleri dakikalar içinde bitirebilir, tekrar eden görevleri tamamen otomatikleştirebilirsiniz. Özellikle birden fazla WooCommerce mağazası yönetenler için bu yaklaşım gerçek bir verimlilik devrimi anlamına geliyor.

Başlangıç için en önemli tavsiyem: Komutları önce test/staging ortamında deneyin, özellikle toplu güncelleme ve silme işlemlerinde. Canlı mağazada geri alınamaz bir hata yapmak istemezsiniz. Bir sonraki adım olarak sık yaptığınız işlemleri betiklere döküp cron job’larla otomatikleştirmeye başlayabilirsiniz. Stok raporları, fiyat güncellemeleri, sipariş durumu değişiklikleri bunların hepsi kolaylıkla otomatikleştirilebilir.

WP-CLI ekosistemi sürekli gelişiyor ve WooCommerce entegrasyonu da her sürümle daha kapsamlı hale geliyor. wp wc --help komutuyla mevcut tüm komutları keşfedebilir, wp wc --help ile de belirli komutun tüm parametrelerini görebilirsiniz. Terminal ve WooCommerce’i birleştirdiğinizde ortaya çıkan verimlilik farkı sizi şaşırtacak.

Bir yanıt yazın

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