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.
