WP CLI ile WooCommerce Ürün Özelliği Tanımlama: wc product_attr Kullanımı
WooCommerce mağazanızda yüzlerce ürün varken, her birinin renk, beden, malzeme gibi özelliklerini tek tek yönetmek gerçek bir kabus olabilir. WP-CLI’nin wc product_attr komutu tam da bu noktada devreye giriyor ve ürün özelliklerini terminal üzerinden hızlıca tanımlamanıza, güncellemenize ve silmenize olanak sağlıyor. Özellikle toplu operasyonlar, migration senaryoları veya staging-production senkronizasyonu gibi durumlarda bu komutun değerini anlıyorsunuz.
WC Product_Attr Nedir?
WooCommerce’de ürün özellikleri (attributes), ürünlerin varyantlarını oluşturmak ya da sadece bilgi amaçlı özellik tanımlamak için kullanılır. Örneğin bir giyim mağazasında “Renk”, “Beden”, “Kumaş Türü” gibi özellikler tanımlarsınız. Bu özellikler ya global (tüm ürünlerde kullanılabilir) ya da ürüne özel olabilir.
WP-CLI üzerinden wc product_attr komutu, bu global özelliklerin yönetimini komut satırından yapmanızı sağlar. WooCommerce REST API altyapısını kullandığı için yapacağınız işlemler tam anlamıyla API üzerinden gerçekleşir, dolayısıyla güvenilir ve tutarlıdır.
Temel Komut Yapısı
wp wc product_attr <command> [options] --user=<kullanici>
--user parametresi kritik önem taşır. WooCommerce API işlemleri için yönetici yetkisine sahip bir kullanıcı belirtmeniz gerekir. Bu parametreyi atladığınızda çoğu komut hata verecektir.
Ön Hazırlık: WP-CLI ve WooCommerce Kontrolü
Komutları çalıştırmadan önce ortamınızın hazır olduğundan emin olun:
# WP-CLI versiyonunu kontrol et
wp --version
# WooCommerce eklentisinin aktif olduğunu doğrula
wp plugin status woocommerce
# Mevcut WooCommerce komutlarını listele
wp wc --help
# Hangi kullanıcıların admin olduğunu bul
wp user list --role=administrator --fields=ID,user_login
Çıktıda woocommerce eklentisinin Active durumda olduğunu gördükten sonra devam edebilirsiniz. --user parametresi için bulduğunuz admin kullanıcı ID’sini veya login adını kullanacaksınız.
Mevcut Ürün Özelliklerini Listeleme
Öncelikle mağazada zaten tanımlı olan özellikleri görmek için list alt komutunu kullanın:
# Tüm ürün özelliklerini listele
wp wc product_attr list --user=admin
# JSON formatında daha detaylı çıktı al
wp wc product_attr list --user=admin --format=json
# Sadece belirli alanları göster
wp wc product_attr list --user=admin --fields=id,name,slug,type,order_by
Bu komut çalıştığında şöyle bir çıktı görürsünüz:
+----+--------+--------+--------+----------+
| id | name | slug | type | order_by |
+----+--------+--------+--------+----------+
| 1 | Renk | renk | select | menu_order |
| 2 | Beden | beden | select | menu_order |
+----+--------+--------+--------+----------+
–format parametresi için kullanabileceğiniz değerler: table, json, csv, ids, count şeklinde sıralanabilir. Özellikle başka bir script’e veri besleyecekseniz json veya csv tercih edin.
Yeni Ürün Özelliği Oluşturma
Basit Özellik Tanımlama
# Temel bir renk özelliği oluştur
wp wc product_attr create
--name="Renk"
--slug="renk"
--type="select"
--order_by="menu_order"
--has_archives=true
--user=admin
Başarılı bir oluşturma işleminde şu çıktıyı görürsünüz:
Success: Created product_attr 3.
Dönen ID’yi not alın, sonraki işlemlerde kullanacaksınız.
Önemli Parametreler
- –name: Özelliğin görünen adı, zorunlu alan
- –slug: URL dostu isim, genellikle otomatik üretilir ama belirtmek iyidir
- –type:
select(açılır liste) veyabuttondeğerlerini alır - –order_by: Terimlerin sıralama kriteri;
menu_order,name,name_num,idolabilir - –has_archives:
trueyaparsanız bu özellik için arşiv sayfası oluşturulur
Toplu Özellik Oluşturma – Gerçek Dünya Senaryosu
Diyelim ki yeni bir e-ticaret sitesi kuruyorsunuz ve 10 farklı özellik tanımlamanız gerekiyor. Tek tek komut yazmak yerine bir bash script hazırlayın:
#!/bin/bash
# attributes.sh - Toplu özellik oluşturma scripti
WP_PATH="/var/www/html/mymağaza"
ADMIN_USER="admin"
declare -A ATTRIBUTES
ATTRIBUTES["Renk"]="renk"
ATTRIBUTES["Beden"]="beden"
ATTRIBUTES["Malzeme"]="malzeme"
ATTRIBUTES["Marka"]="marka"
ATTRIBUTES["Menşei"]="mensei"
ATTRIBUTES["Koku"]="koku"
for attr_name in "${!ATTRIBUTES[@]}"; do
attr_slug="${ATTRIBUTES[$attr_name]}"
result=$(wp wc product_attr create
--name="$attr_name"
--slug="$attr_slug"
--type="select"
--order_by="menu_order"
--has_archives=true
--user=$ADMIN_USER
--path=$WP_PATH
2>&1)
if echo "$result" | grep -q "Success"; then
echo "[OK] '$attr_name' özelliği oluşturuldu: $result"
else
echo "[HATA] '$attr_name' oluşturulamadı: $result"
fi
done
echo "İşlem tamamlandı."
Bu scripti çalıştırmak için:
chmod +x attributes.sh
./attributes.sh
Mevcut Özelliği Görüntüleme ve Güncelleme
Tek Özelliğin Detaylarını Alma
# ID ile özellik detaylarını gör
wp wc product_attr get 1 --user=admin
# JSON formatında al
wp wc product_attr get 1 --user=admin --format=json
Özellik Güncelleme
Mevcut bir özelliği güncellemek için update alt komutunu kullanın:
# ID'si 1 olan özelliğin adını güncelle
wp wc product_attr update 1
--name="Ana Renk"
--user=admin
# Sıralama kriterini değiştir
wp wc product_attr update 1
--order_by="name"
--user=admin
# Arşiv sayfasını devre dışı bırak
wp wc product_attr update 2
--has_archives=false
--user=admin
Güncelleme işlemlerinde sadece değiştirmek istediğiniz parametreleri belirtmeniz yeterlidir, diğer alanlar olduğu gibi kalır.
Özellik Silme
# Tek özellik silme
wp wc product_attr delete 3 --user=admin
# Silme işlemini zorla (onay sormadan)
wp wc product_attr delete 3 --force=true --user=admin
Dikkat: Bir özelliği sildiğinizde, o özelliğe bağlı tüm terimler (renkler, bedenler vb.) ve ürünlerle ilişkileri de silinir. Production ortamında silme işleminden önce mutlaka yedek alın.
Migration Senaryosu: Staging’den Production’a Özellik Aktarımı
Bu senaryo gerçek hayatta sıkça karşılaşılan bir durum. Staging ortamında hazırladığınız özellik yapısını production’a taşımak istiyorsunuz:
#!/bin/bash
# migrate_attrs.sh
# Staging'den özellikleri JSON olarak al, production'a aktar
STAGING_PATH="/var/www/staging"
PROD_PATH="/var/www/production"
ADMIN_USER="admin"
BACKUP_FILE="/tmp/attributes_backup_$(date +%Y%m%d_%H%M%S).json"
echo "Staging'deki özellikler alınıyor..."
# Staging'den özellikleri JSON olarak çek
wp wc product_attr list
--user=$ADMIN_USER
--path=$STAGING_PATH
--format=json > $BACKUP_FILE
echo "Özellikler $BACKUP_FILE dosyasına kaydedildi."
# JSON dosyasını okuyarak production'a aktar
# jq aracının kurulu olduğunu varsayıyoruz
if ! command -v jq &> /dev/null; then
echo "jq kurulu değil. Yükleniyor..."
apt-get install -y jq 2>/dev/null || yum install -y jq 2>/dev/null
fi
echo "Production'a aktarılıyor..."
cat $BACKUP_FILE | jq -c '.[]' | while read attr; do
name=$(echo $attr | jq -r '.name')
slug=$(echo $attr | jq -r '.slug')
type=$(echo $attr | jq -r '.type')
order_by=$(echo $attr | jq -r '.order_by')
has_archives=$(echo $attr | jq -r '.has_archives')
# Production'da zaten var mı kontrol et
existing=$(wp wc product_attr list
--user=$ADMIN_USER
--path=$PROD_PATH
--format=json 2>/dev/null | jq -r ".[] | select(.slug=="$slug") | .id")
if [ -n "$existing" ]; then
echo "[ATLA] '$name' zaten production'da mevcut (ID: $existing)"
continue
fi
result=$(wp wc product_attr create
--name="$name"
--slug="$slug"
--type="$type"
--order_by="$order_by"
--has_archives=$has_archives
--user=$ADMIN_USER
--path=$PROD_PATH
2>&1)
echo "[OK] '$name' production'a aktarıldı: $result"
done
echo "Migration tamamlandı. Yedek dosya: $BACKUP_FILE"
Özellik Terimlerini Yönetmek: product_attr_terms
Özellikleri tanımladıktan sonra bu özelliklere ait terimleri (örneğin “Renk” özelliğine “Kırmızı”, “Mavi”, “Yeşil” değerlerini) de WP-CLI ile ekleyebilirsiniz. Bu komut wc product_attr ile yakından ilgili olduğu için burada da değinelim:
# Renk özelliğine (ID:1) yeni terim ekle
wp wc product_attr_term create 1
--name="Kırmızı"
--slug="kirmizi"
--description="Ateş kırmızısı ton"
--user=admin
# Tüm terimleri listele
wp wc product_attr_term list 1 --user=admin
# Toplu terim ekleme
for color in "Kırmızı:kirmizi" "Mavi:mavi" "Yeşil:yesil" "Siyah:siyah" "Beyaz:beyaz"; do
name=$(echo $color | cut -d: -f1)
slug=$(echo $color | cut -d: -f2)
wp wc product_attr_term create 1
--name="$name"
--slug="$slug"
--user=admin
echo "$name terimi eklendi."
done
Hata Ayıklama ve Sorun Giderme
Sık Karşılaşılan Hatalar
“Error: Sorry, you are not allowed to do this.” hatasını alıyorsanız:
# Kullanıcının yönetici olduğunu doğrula
wp user get admin --fields=roles --user=admin
# Yetki varsa WooCommerce izinlerini kontrol et
wp option get woocommerce_api_enabled
“Error: No route was found matching the URL and request method” hatasında:
# WooCommerce API'sinin aktif olup olmadığını kontrol et
wp option get woocommerce_api_enabled
# Aktif değilse aç
wp option update woocommerce_api_enabled yes
# Kalıcı bağlantıları yenile
wp rewrite flush
Özellik slug çakışması durumunda:
# Mevcut slug'ları kontrol et
wp wc product_attr list --user=admin --fields=id,name,slug --format=csv
# Çakışan slug'u güncelle
wp wc product_attr update 5 --slug="yeni-benzersiz-slug" --user=admin
Debug Modu ile Çalışma
Bir komutun arka planda ne yaptığını görmek istiyorsanız:
# WP_DEBUG ile çalıştır
WP_DEBUG=1 wp wc product_attr list --user=admin
# Daha fazla bilgi için --debug bayrağı
wp wc product_attr create --name="Test" --user=admin --debug
Cron ile Otomatik Özellik Yönetimi
Büyük mağazalarda özellik yapısının periyodik olarak kontrol edilmesi ve raporlanması gerekebilir. Bunun için basit bir monitoring scripti:
#!/bin/bash
# attr_monitor.sh - Günlük özellik raporu
WP_PATH="/var/www/html"
ADMIN_USER="admin"
LOG_FILE="/var/log/wc_attributes.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATE] Özellik kontrolü başlıyor..." >> $LOG_FILE
# Toplam özellik sayısını al
attr_count=$(wp wc product_attr list
--user=$ADMIN_USER
--path=$WP_PATH
--format=count 2>/dev/null)
echo "[$DATE] Toplam özellik sayısı: $attr_count" >> $LOG_FILE
# Özelliklerin listesini kaydet
wp wc product_attr list
--user=$ADMIN_USER
--path=$WP_PATH
--format=json >> $LOG_FILE 2>&1
echo "[$DATE] Rapor tamamlandı." >> $LOG_FILE
Bu scripti cron’a eklemek için:
# Crontab'ı düzenle
crontab -e
# Her sabah 08:00'de çalıştır
0 8 * * * /usr/local/bin/attr_monitor.sh
Performans Önerileri
Büyük mağazalarda toplu işlemler yaparken dikkat etmeniz gereken bazı noktalar var:
- –prompt bayrağını production’da kullanmayın, script akışını keser
- Toplu işlemlerde işlemler arasına
sleep 0.5koyun, veritabanını bunaltmamak için - Büyük import işlemlerini
screenveyatmuxiçinde çalıştırın, bağlantı kopmasına karşı - İşlem öncesi
wp cache flushyapın, stale cache sorunlarını engelleyin - Çok sayıda özellik ekleyecekseniz
wp maintenance-mode activateile siteyi geçici kapatın
# Güvenli toplu işlem şablonu
wp maintenance-mode activate
wp cache flush
# ... toplu işlemleriniz ...
wp cache flush
wp maintenance-mode deactivate
echo "İşlem tamamlandı, site yeniden açıldı."
Sonuç
wp wc product_attr komutu, WooCommerce mağazanızın özellik yönetimini otomatize etmenin en temiz yolu. Tek seferlik operasyonlarda zaman kazandırırken, CI/CD pipeline’larına entegre ettiğinizde gerçek gücünü ortaya koyuyor.
Özet olarak öğrendiklerimiz:
listile mevcut özellikleri görüntüleme ve farklı formatlarda export etmecreateile yeni özellik tanımlama ve parametrelerini doğru kullanmaupdateile var olan özellikleri değiştirmedeleteile özellik silme ve dikkat edilmesi gerekenlerproduct_attr_termile özellik terimlerini yönetme- Migration, monitoring ve toplu işlem senaryolarında script geliştirme
- Sık karşılaşılan hataları giderme yöntemleri
Bir sonraki adım olarak wp wc product_attr_term komutunu derinlemesine incelemenizi ve özellik-terim yapısını tam anlamıyla WP-CLI üzerinden yönetmeyi öğrenmenizi tavsiye ederim. Bu iki komutu birlikte kullandığınızda WooCommerce ürün yapısı üzerinde tam kontrol sahibi olursunuz ve günlerce sürecek manuel işlemleri dakikalara indirebilirsiniz.
