WP CLI ile WooCommerce Ödeme Yöntemi Yönetimi: wp wc payment_gateway Komutları

E-ticaret sitelerinde ödeme yönetimi, hem teknik hem de iş sürekliliği açısından kritik bir konu. Bir müşteri ödeme sayfasına geldiğinde hangi yöntemlerin göründüğü, hangilerinin aktif olduğu ve hangi ağ geçidinin öncelikli çalıştığı doğrudan gelir etkisi yaratıyor. WooCommerce bu yapıyı oldukça iyi organize etmiş olsa da, birden fazla siteniz varsa ya da CI/CD pipeline’larınızda ödeme konfigürasyonunu otomatize etmeniz gerekiyorsa, WP CLI’nin wp wc payment_gateway komutları hayat kurtarıcı oluyor.

wp wc payment_gateway Nedir ve Ne İşe Yarar?

WP CLI’nin WooCommerce eklentisiyle birlikte gelen wp wc payment_gateway komutu, WooCommerce’in ödeme ağ geçitlerini (payment gateway) komut satırından yönetmenizi sağlar. WordPress yönetim paneline girmeden, SSH üzerinden doğrudan sunucunuzda ödeme yöntemlerini listeleyebilir, aktif/pasif yapabilir, sıralama düzenini değiştirebilir ve konfigürasyon ayarlarını güncelleyebilirsiniz.

Bu özellikle şu senaryolarda çok işe yarıyor:

  • Birden fazla WooCommerce sitesini tek script ile yönetmek
  • Deployment sonrası ödeme ağ geçitlerini otomatik konfigüre etmek
  • Test ortamından prodüksiyona geçişte ödeme ayarlarını senkronize etmek
  • Bakım modu sırasında belirli ödeme yöntemlerini hızlıca devre dışı bırakmak
  • Cron job ile ödeme durumlarını izlemek

Temel Komut Yapısı

wp wc payment_gateway <command> [--user=<id>]

--user parametresi önemli. WooCommerce REST API tabanlı komutlar için yönetici yetkisine sahip bir kullanıcı belirtmeniz gerekiyor. Aksi takdirde “Sorry, you cannot list resources” gibi hata mesajlarıyla karşılaşırsınız.

# Kullanıcı ID yerine kullanıcı adı da verebilirsiniz
wp wc payment_gateway list --user=admin
wp wc payment_gateway list --user=1

Ödeme Ağ Geçitlerini Listeleme

En sık kullanacağınız komut list. Sitede tanımlı tüm ödeme yöntemlerini gösterir.

wp wc payment_gateway list --user=admin

Bu komutun çıktısı varsayılan olarak tablo formatında gelir ve şu bilgileri içerir: ağ geçidi ID’si, başlık, açıklama, sıra numarası ve aktif/pasif durumu.

Daha temiz bir çıktı için format parametresini kullanabilirsiniz:

# JSON formatında listele
wp wc payment_gateway list --user=admin --format=json

# Sadece belirli alanları göster
wp wc payment_gateway list --user=admin --fields=id,title,enabled

# CSV formatında export al
wp wc payment_gateway list --user=admin --format=csv > payment_gateways_backup.csv

Gerçek dünya örneği: Bir müşterimin sitesinde hangi ödeme yöntemlerinin aktif olduğunu hızlıca kontrol etmem gerektiğinde şu komutu kullanıyorum:

wp wc payment_gateway list --user=admin --fields=id,title,enabled --format=json | python3 -m json.tool

Bu şekilde JSON çıktısını düzgün formatlayarak aktif/pasif durumunu net görebiliyorum.

Belirli Bir Ödeme Ağ Geçidinin Detaylarını Görme

get komutu ile belirli bir ödeme ağ geçidinin tüm konfigürasyon detaylarını inceleyebilirsiniz. Burada ağ geçidinin ID’sini bilmeniz gerekiyor (bunu list komutuyla öğrenebilirsiniz).

# Stripe ağ geçidinin detaylarını görüntüle
wp wc payment_gateway get stripe --user=admin

# PayPal Standard ayarlarını JSON formatında al
wp wc payment_gateway get paypal --user=admin --format=json

# COD (Kapıda Ödeme) detayları
wp wc payment_gateway get cod --user=admin

Yaygın ödeme ağ geçidi ID’leri şunlardır:

  • paypal: PayPal Standard
  • stripe: Stripe (resmi WooCommerce Stripe eklentisi)
  • cod: Kapıda Ödeme (Cash on Delivery)
  • cheque: Çek ile Ödeme
  • bacs: Banka Transferi (BACS)
  • paypal_express: PayPal Express Checkout
  • woocommerce_payments: WooCommerce Payments (WooPayments)

Üçüncü parti eklentilerin ID’leri farklılık gösterebilir. Örneğin iyzico için iyzico, PayU için payu gibi ID’ler kullanılıyor, ama bunları mutlaka list komutuyla teyit edin.

Ödeme Ağ Geçidini Aktif veya Pasif Yapma

Burada update komutu devreye giriyor. En kritik işlem bu çünkü yanlış bir komutla müşterileriniz ödeme yapamaz hale gelebilir. Dikkatli kullanın.

# Stripe'ı aktif et
wp wc payment_gateway update stripe --enabled=true --user=admin

# PayPal'ı pasif yap
wp wc payment_gateway update paypal --enabled=false --user=admin

# Kapıda ödemeyi aktif et
wp wc payment_gateway update cod --enabled=true --user=admin

Önemli not: enabled parametresi true/false string değeri alıyor, boolean 1/0 değil. Bu küçük detayı atlarsanız komut hata vermeden çalışıyor gibi görünse de ayar değişmiyor olabilir.

Prodüksiyon ortamında bu komutları çalıştırmadan önce mutlaka mevcut durumu kaydedin:

# Önce mevcut durumu kaydet
wp wc payment_gateway list --user=admin --format=csv > /tmp/payment_gateways_before_$(date +%Y%m%d_%H%M%S).csv

# Sonra değişikliği yap
wp wc payment_gateway update stripe --enabled=true --user=admin

# Değişikliği doğrula
wp wc payment_gateway get stripe --user=admin --fields=id,title,enabled

Ödeme Sıralamasını Değiştirme

WooCommerce ödeme sayfasında ödeme yöntemlerinin sıralaması order parametresiyle belirleniyor. Düşük numara, üstte görünme anlamına geliyor.

# Banka transferini ilk sıraya al
wp wc payment_gateway update bacs --order=0 --user=admin

# Stripe'ı ikinci sıraya koy
wp wc payment_gateway update stripe --order=1 --user=admin

# Kapıda ödemeyi üçüncü sıraya al
wp wc payment_gateway update cod --order=2 --user=admin

# PayPal'ı en sona at
wp wc payment_gateway update paypal --order=10 --user=admin

Gerçek Dünya Senaryoları

Senaryo 1: Bakım Penceresi Sırasında Ödeme Yönetimi

Sunucu bakımı yapıyorsunuz ve yeni ödeme çift ödeme durumu yaratmasın diye kartlı ödemeyi geçici olarak kapatmak istiyorsunuz. Bakım bittikten sonra tekrar açacaksınız.

#!/bin/bash
# maintenance_payment.sh

WP_PATH="/var/www/html/myshop"
ADMIN_USER="admin"
BACKUP_FILE="/tmp/payment_backup_$(date +%Y%m%d_%H%M%S).csv"

echo "Ödeme durumları yedekleniyor..."
wp --path="$WP_PATH" wc payment_gateway list --user="$ADMIN_USER" --format=csv > "$BACKUP_FILE"
echo "Yedek alındı: $BACKUP_FILE"

echo "Kartlı ödeme devre dışı bırakılıyor..."
wp --path="$WP_PATH" wc payment_gateway update stripe --enabled=false --user="$ADMIN_USER"

echo "PayPal devre dışı bırakılıyor..."
wp --path="$WP_PATH" wc payment_gateway update paypal --enabled=false --user="$ADMIN_USER"

echo "Kapıda ödeme aktif bırakılıyor (sadece bu kalacak)..."
wp --path="$WP_PATH" wc payment_gateway update cod --enabled=true --user="$ADMIN_USER"

echo "Bakım öncesi ödeme ayarları tamamlandı."
wp --path="$WP_PATH" wc payment_gateway list --user="$ADMIN_USER" --fields=id,title,enabled

Bakım bittikten sonra:

#!/bin/bash
# restore_payment.sh

WP_PATH="/var/www/html/myshop"
ADMIN_USER="admin"

echo "Normal ödeme yöntemleri geri yükleniyor..."
wp --path="$WP_PATH" wc payment_gateway update stripe --enabled=true --user="$ADMIN_USER"
wp --path="$WP_PATH" wc payment_gateway update paypal --enabled=true --user="$ADMIN_USER"

echo "Geri yükleme tamamlandı."
wp --path="$WP_PATH" wc payment_gateway list --user="$ADMIN_USER" --fields=id,title,enabled

Senaryo 2: Çoklu Site Yönetimi

10 ayrı WooCommerce siteniz var ve hepsinde banka transferi ödeme yönteminin başlığını güncellemek istiyorsunuz. Tek tek panellere girip değiştirmek saatler sürer. Script ile dakikalar içinde halledersiniz:

#!/bin/bash
# update_all_sites_payment.sh

SITES=(
    "/var/www/html/site1"
    "/var/www/html/site2"
    "/var/www/html/site3"
    "/var/www/html/site4"
)

ADMIN_USER="admin"

for SITE_PATH in "${SITES[@]}"; do
    SITE_NAME=$(basename "$SITE_PATH")
    echo "İşleniyor: $SITE_NAME"
    
    # Önce sitenin WooCommerce'inin aktif olup olmadığını kontrol et
    WC_ACTIVE=$(wp --path="$SITE_PATH" plugin is-active woocommerce --quiet && echo "yes" || echo "no")
    
    if [ "$WC_ACTIVE" == "yes" ]; then
        wp --path="$SITE_PATH" wc payment_gateway update bacs 
            --title="Havale/EFT ile Ödeme" 
            --description="Sipariş tutarını aşağıdaki hesap numarasına gönderin." 
            --enabled=true 
            --user="$ADMIN_USER"
        echo "$SITE_NAME: Banka transferi güncellendi."
    else
        echo "$SITE_NAME: WooCommerce aktif değil, atlanıyor."
    fi
done

echo "Tüm siteler güncellendi."

Senaryo 3: Deployment Sonrası Konfigürasyon

Staging ortamından prodüksiyona geçişte ödeme ağ geçitlerini doğru şekilde konfigüre etmeniz gerekiyor. Staging’de test modunda olan Stripe’ı prodüksiyonda live moda almanız gerekiyor (ama bunu WP CLI ile doğrudan yapamıyorsunuz, wp-config.php veya veritabanı üzerinden yapmanız gerekiyor). Ancak aktif/pasif durumunu ve sıralamayı WP CLI ile kolayca ayarlayabilirsiniz:

#!/bin/bash
# post_deploy_payment_config.sh

WP_PATH="/var/www/html/production"
ADMIN_USER="admin"
ENVIRONMENT=${1:-"production"}  # Script'e parametre olarak geçilebilir

echo "Ortam: $ENVIRONMENT"

if [ "$ENVIRONMENT" == "production" ]; then
    echo "Prodüksiyon ödeme konfigürasyonu uygulanıyor..."
    
    # Prodüksiyonda gerçek ödeme yöntemlerini aktif et
    wp --path="$WP_PATH" wc payment_gateway update stripe 
        --enabled=true --order=0 --user="$ADMIN_USER"
    
    wp --path="$WP_PATH" wc payment_gateway update paypal 
        --enabled=true --order=1 --user="$ADMIN_USER"
    
    wp --path="$WP_PATH" wc payment_gateway update bacs 
        --enabled=true --order=2 --user="$ADMIN_USER"
    
    # Test/geliştirme yöntemlerini kapat
    wp --path="$WP_PATH" wc payment_gateway update cheque 
        --enabled=false --user="$ADMIN_USER"
    
    wp --path="$WP_PATH" wc payment_gateway update cod 
        --enabled=false --user="$ADMIN_USER"
        
elif [ "$ENVIRONMENT" == "staging" ]; then
    echo "Staging ödeme konfigürasyonu uygulanıyor..."
    
    # Staging'de sadece test yöntemleri aktif
    wp --path="$WP_PATH" wc payment_gateway update cheque 
        --enabled=true --order=0 --user="$ADMIN_USER"
    
    wp --path="$WP_PATH" wc payment_gateway update cod 
        --enabled=true --order=1 --user="$ADMIN_USER"
    
    # Gerçek ödeme yöntemlerini kapat
    wp --path="$WP_PATH" wc payment_gateway update stripe 
        --enabled=false --user="$ADMIN_USER"
    
    wp --path="$WP_PATH" wc payment_gateway update paypal 
        --enabled=false --user="$ADMIN_USER"
fi

echo "Konfigürasyon tamamlandı. Mevcut durum:"
wp --path="$WP_PATH" wc payment_gateway list --user="$ADMIN_USER" --fields=id,title,enabled,order

Ödeme Başlığı ve Açıklamasını Güncelleme

Ödeme yöntemi başlıklarını ve açıklamalarını da WP CLI ile güncelleyebilirsiniz. Bu özellikle müşteri tarafındaki metinleri kısa sürede değiştirmeniz gerektiğinde kullanışlı:

# Kapıda ödeme başlık ve açıklamasını güncelle
wp wc payment_gateway update cod 
    --title="Kapıda Nakit Ödeme" 
    --description="Siparişiniz teslim edildiğinde nakit ödeme yapabilirsiniz. Kargo ücreti + 5 TL kapıda ödeme hizmet bedeli alınır." 
    --user=admin

# Banka transferi talimatlarını güncelle
wp wc payment_gateway update bacs 
    --instructions="Siparişinizi aldıktan sonra 2 iş günü içinde ödemenizi yapınız. Açıklama kısmına sipariş numaranızı yazmayı unutmayın." 
    --user=admin

Hata Ayıklama ve Sorun Giderme

WP CLI komutlarında sorun yaşadığınızda --debug flagı çok yardımcı oluyor:

# Debug modunda çalıştır
wp wc payment_gateway list --user=admin --debug

# Belirli bir debug kaynağı için
wp wc payment_gateway get stripe --user=admin --debug=wc

Sık karşılaşılan hatalar ve çözümleri:

  • “Error: ‘wc’ is not a registered wp command”: woocommerce/woocommerce.php eklentisi aktif değil ya da WP CLI WooCommerce entegrasyonu yüklü değil. wp plugin activate woocommerce komutunu çalıştırın.
  • “Error: Sorry, you cannot list resources”: --user parametresi eksik ya da belirtilen kullanıcının yönetici yetkisi yok. wp user list --role=administrator ile admin kullanıcıları listeleyin.
  • “Error: Invalid parameter(s): enabled”: Bazı eski WooCommerce sürümlerinde enabled parametresi farklı çalışıyor. WooCommerce’i güncelleyin ya da doğrudan veritabanı üzerinden wp option update kullanın.
# Alternatif yöntem: Doğrudan option ile ödeme ayarlarını kontrol et
wp option get woocommerce_stripe_settings --format=json
wp option get woocommerce_paypal_settings --format=json

# Stripe'ı bu yöntemle aktif/pasif yap
wp option patch update woocommerce_stripe_settings enabled yes

Cron ile Otomatik İzleme

Ödeme ağ geçitlerinin durumunu düzenli aralıklarla kontrol eden ve sorun varsa uyarı gönderen bir izleme scripti:

#!/bin/bash
# payment_gateway_monitor.sh
# Crontab: */15 * * * * /opt/scripts/payment_gateway_monitor.sh

WP_PATH="/var/www/html/myshop"
ADMIN_USER="admin"
ALERT_EMAIL="[email protected]"
REQUIRED_GATEWAYS="stripe paypal"

ERRORS=""

for GW in $REQUIRED_GATEWAYS; do
    STATUS=$(wp --path="$WP_PATH" wc payment_gateway get "$GW" 
        --fields=enabled --format=json --user="$ADMIN_USER" 2>/dev/null | 
        python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('enabled', 'unknown'))")
    
    if [ "$STATUS" != "true" ]; then
        ERRORS="$ERRORSn$GW ağ geçidi pasif durumda! (enabled=$STATUS)"
    fi
done

if [ -n "$ERRORS" ]; then
    echo -e "UYARI: Ödeme ağ geçidi sorunu tespit edildi!n$ERRORS" | 
        mail -s "[ALARM] WooCommerce Ödeme Ağ Geçidi Sorunu" "$ALERT_EMAIL"
    
    # Log dosyasına da yaz
    echo "$(date): $ERRORS" >> /var/log/payment_gateway_monitor.log
fi

Bu scripti crontab’a ekleyin:

crontab -e
# Şu satırı ekleyin:
# */15 * * * * /opt/scripts/payment_gateway_monitor.sh

WP CLI ile Ödeme Loglarını Kontrol Etme

WooCommerce ödeme loglarını doğrudan CLI’dan okumak da mümkün. Özellikle bir ödeme sorunu yaşandığında hızlıca log kontrolü yapabilirsiniz:

# WooCommerce log dizinini kontrol et
ls -la $(wp --path="/var/www/html/myshop" eval 'echo WC_LOG_DIR;')

# Stripe loglarını tail et (log dosya adı dinamik oluşuyor)
STRIPE_LOG=$(find /var/www/html/myshop/wp-content/uploads/wc-logs/ -name "stripe-*.log" | sort -r | head -1)
tail -f "$STRIPE_LOG"

# WooCommerce sistem raporu al
wp --path="/var/www/html/myshop" wc system_status --user=admin --format=json

Sonuç

wp wc payment_gateway komut seti, WooCommerce site yönetimini ciddi ölçüde kolaylaştıran araçlardan biri. Özellikle çoklu site ortamlarında, CI/CD süreçlerinde ve acil müdahale senaryolarında manuel panel işlemlerinin yerini alabiliyor.

Önemli noktaları özetlemek gerekirse:

  • Her komutta --user parametresini belirtmeyi unutmayın, aksi halde komutlar çalışmıyor
  • Prodüksiyon ortamında değişiklik yapmadan önce mutlaka CSV veya JSON formatında yedek alın
  • enabled parametresi true/false string değeri alıyor, sayısal değerler beklendiği gibi çalışmıyor
  • Eğer WP CLI komutu işe yaramıyorsa wp option get woocommerce__settings ile doğrudan veritabanından müdahale edebilirsiniz
  • Cron ile izleme scripti kurarak ödeme ağ geçitlerinin pasif duruma düşmesini anında fark edebilirsiniz

Ödeme yönetimi konusunda her dakikanın para anlamına geldiği e-ticaret ortamlarında, bu komutları scriptle otomatize etmek hem hata payını azaltıyor hem de müdahale süresini dramatik biçimde kısaltıyor. Shell scriptlerinizi iyi belgeleyin, test ortamında deneyin, sonra prodüksiyona taşıyın.

Bir yanıt yazın

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