WP CLI ile WordPress Tema Yönetimi: Kurulum ve Aktivasyon
WordPress sitenizi komut satırından yönetmek, özellikle birden fazla site veya sunucu üzerinde çalışırken hayat kurtarır. WP CLI’nin sunduğu wp theme komutları, tema kurulumundan aktivasyona, güncellemelerden silmeye kadar tüm tema yönetimini terminal üzerinden yapmanızı sağlar. Bu yazıda wp theme komutlarını gerçek dünya senaryolarıyla birlikte ele alacağız.
WP CLI Nedir ve Neden Kullanmalısınız?
Eğer hâlâ WordPress admin panelinden her şeyi yapıyorsanız, WP CLI ile tanışma zamanınız gelmiş demektir. WP CLI, WordPress’i komut satırından yönetmenizi sağlayan güçlü bir araçtır. Özellikle şu durumlarda vazgeçilmezdir:
- Toplu işlemler: 20 sitenin temasını güncellemek istiyorsunuz
- Otomasyon: Cron job veya deploy script’leri yazıyorsunuz
- Sorun giderme: Admin paneline giremiyorsunuz ama SSH erişiminiz var
- Hız: Mouse ile tıklamak yerine tek satır komutla işi bitirmek istiyorsunuz
wp theme komutu bu araçların tam merkezinde yer alıyor. Hadi başlayalım.
Temel wp theme Komutlarına Genel Bakış
wp theme altında birçok alt komut bulunur. En sık kullandıklarımız şunlardır:
- wp theme install: Tema kurar
- wp theme activate: Temayı aktifleştirir
- wp theme list: Kurulu temaları listeler
- wp theme delete: Tema siler
- wp theme update: Tema günceller
- wp theme status: Tema durumunu gösterir
- wp theme search: WordPress.org’da tema arar
Şimdi bunları tek tek, gerçek senaryolarla inceleyelim.
Tema Kurulumu: wp theme install
WordPress.org’dan Tema Kurma
WordPress.org deposundaki herhangi bir temayı slug adıyla kurabilirsiniz. Tema slug’ını WordPress.org’daki URL’den bulabilirsiniz. Örneğin wordpress.org/themes/astra adresindeki temanın slug’ı astra‘dır.
wp theme install astra
Bu komut temayı indirir ve kurulum dosyalarını yerleştirir, ancak aktifleştirmez. Hemen aktifleştirmek istiyorsanız --activate parametresini ekleyin:
wp theme install astra --activate
Birden Fazla Tema Aynı Anda Kurma
Yeni bir WordPress kurulumu yapıyorsunuz ve birkaç temayı hazır bulundurmak istiyorsunuz. Tüm slug’ları art arda yazabilirsiniz:
wp theme install astra generatepress oceanwp
Bu gerçekten işe yarıyor. Özellikle staging ortamları hazırlarken veya müşteri için yeni site açarken birden fazla temayı tek komutla kurmak büyük zaman kazandırır.
Zip Dosyasından Tema Kurma
Satın aldığınız premium bir tema var ve zip dosyası elimde diyelim. Ya da geliştirdiğiniz özel bir tema var. Dosya yolunu doğrudan veriyorsunuz:
wp theme install /home/user/downloads/premium-theme.zip
Uzak bir URL’den de kurulum yapabilirsiniz:
wp theme install https://example.com/themes/my-theme.zip
Bu özellikle CI/CD pipeline’larında son derece kullanışlıdır. Deploy script’inizde tema zip’ini bir artifact storage’dan çekip kurabilirsiniz.
Mevcut Temayı Zorla Yeniden Kurma
Bir tema dosyası bozulduysa veya elle yapılan değişiklikleri sıfırlamak istiyorsanız --force parametresi kullanın:
wp theme install astra --force
Bu komut tema zaten kurulu olsa bile yeniden indirir ve üzerine yazar.
Tema Aktivasyonu: wp theme activate
Kurulu bir temayı aktifleştirmek son derece basit:
wp theme activate astra
Çocuk Tema ile Çalışma
Gerçek dünya projelerinde genellikle parent tema kurup üzerine bir child tema aktifleştirirsiniz. Önce parent temayı kurun:
wp theme install astra
wp theme install astra-child --activate
Eğer child temanız özel bir zip dosyasıysa:
wp theme install astra
wp theme install /var/www/themes/my-client-child.zip --activate
Senaryo: Hızlı Tema Geçişi
Diyelim ki sitenizin temasını test ediyorsunuz. A/B test için iki farklı tema arasında geçiş yapmanız gerekiyor. Bu durumda basit bir script yazabilirsiniz:
# Mevcut aktif temayı kaydet
CURRENT_THEME=$(wp theme list --status=active --field=name)
echo "Aktif tema: $CURRENT_THEME"
# Yeni temayı aktifleştir
wp theme activate generatepress
echo "Yeni tema aktifleştirildi"
# 5 dakika sonra eski temaya dön (test için)
sleep 300
wp theme activate $CURRENT_THEME
echo "Eski temaya geri dönüldü"
Tema Listeleme ve Durum Kontrolü
Tüm Temaları Listeleme
wp theme list
Bu komut kurulu tüm temaların adını, durumunu (aktif/inaktif) ve versiyonunu gösterir.
Sadece Aktif Temayı Görmek
wp theme list --status=active
Belirli Alanları Gösterme
Sadece tema adlarını script’te kullanmak istiyorsanız:
wp theme list --field=name
Virgülle ayrılmış belirli alanlar için:
wp theme list --fields=name,status,version
Güncelleme Bekleyen Temaları Bulma
Bu özellikle güvenlik açısından kritik. Güncellenemeyi bekleyen temaları görmek için:
wp theme list --update=available
JSON veya CSV Çıktısı Alma
Monitoring script’lerinize veya başka araçlara veri beslemek istiyorsanız:
wp theme list --format=json
wp theme list --format=csv
Tema Güncelleme: wp theme update
Tek Bir Temayı Güncelleme
wp theme update astra
Tüm Temaları Güncelleme
wp theme update --all
Bu komut tek başına çok güçlü ama dikkatli kullanın. Production ortamında tüm temaları körü körüne güncellemeden önce staging’de test edin.
Belirli Bir Versiyona Güncelleme veya Düşürme
Bazen bir güncelleme sitenizi bozar ve bir önceki versiyona dönmek istersiniz:
wp theme install astra --version=3.9.0 --force
Bu aslında install komutudur ama --force ile birlikte versiyon düşürme işlevi görür.
Güncelleme Öncesi Dry Run
Ne yapılacağını görmek ama gerçekten yapmamak için:
wp theme update --all --dry-run
Tema Silme: wp theme delete
Tek Tema Silme
wp theme delete twentytwenty
Önemli not: Aktif temayı silemezsiniz. Önce başka bir temayı aktifleştirip sonra silmeniz gerekir.
Birden Fazla Tema Silme
wp theme delete twentynineteen twentytwenty
Aktif Tema Dışındaki Tüm Temaları Silme
Bu gerçekten işe yarayan bir komut. Temizlik yaparken ya da sunucu güvenliğini artırmak için kullanılmayan temaları toplu silmek isteyebilirsiniz:
wp theme delete $(wp theme list --status=inactive --field=name)
Bu komut önce inaktif temaların isimlerini çeker, sonra hepsini siler. Güçlü ama dikkatli kullanın.
Gerçek Dünya Senaryoları
Senaryo 1: Çoklu Site Kurulumu
Ajans ortamında çalışıyorsunuz ve aynı anda 10 müşteri sitesi kurmanız gerekiyor. Her site için aynı tema setini kullanıyorsunuz. Şöyle bir script yazabilirsiniz:
#!/bin/bash
# Site listesi
SITES=(
"/var/www/client1"
"/var/www/client2"
"/var/www/client3"
)
# Her site için tema kurulumu
for SITE in "${SITES[@]}"; do
echo "=== $SITE için tema kuruluyor ==="
# Ana temayı kur
wp theme install astra --path="$SITE"
# Child temayı kur ve aktifleştir
wp theme install /opt/themes/client-child.zip
--path="$SITE"
--force
--activate
# Gereksiz default temaları sil
wp theme delete twentytwenty twentytwentyone twentytwentytwo
--path="$SITE" 2>/dev/null
echo "=== $SITE tamamlandı ==="
done
echo "Tüm siteler hazır!"
Senaryo 2: Otomatik Güncelleme ve Yedekleme Script’i
Production sunucusunda her gece çalışan bir güncelleme script’i:
#!/bin/bash
SITE_PATH="/var/www/html"
LOG_FILE="/var/log/wp-updates.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATE] Tema güncelleme başladı" >> $LOG_FILE
# Güncellenecek tema var mı kontrol et
UPDATE_COUNT=$(wp theme list --update=available --format=count --path="$SITE_PATH")
if [ "$UPDATE_COUNT" -gt 0 ]; then
echo "[$DATE] $UPDATE_COUNT tema güncellemesi mevcut" >> $LOG_FILE
# Güncellemeden önce veritabanı yedeği al
wp db export /backups/pre-theme-update-$(date +%Y%m%d).sql
--path="$SITE_PATH"
# Temaları güncelle
wp theme update --all --path="$SITE_PATH" >> $LOG_FILE 2>&1
echo "[$DATE] Güncelleme tamamlandı" >> $LOG_FILE
else
echo "[$DATE] Güncellenecek tema yok" >> $LOG_FILE
fi
Bu script’i crontab’a ekleyebilirsiniz:
# Her gece 02:00'de çalıştır
0 2 * * * /opt/scripts/wp-theme-update.sh
Senaryo 3: Staging’den Production’a Tema Taşıma
Geliştirme ortamında tamamladığınız child temayı production’a aktarırken:
#!/bin/bash
# Staging'deki child temayı zip'le
THEME_NAME="my-client-child"
STAGING_PATH="/var/www/staging"
PROD_PATH="/var/www/production"
THEME_DIR="$STAGING_PATH/wp-content/themes/$THEME_NAME"
ZIP_FILE="/tmp/$THEME_NAME-$(date +%Y%m%d%H%M%S).zip"
# Tema dizinini zip'le
cd "$STAGING_PATH/wp-content/themes"
zip -r "$ZIP_FILE" "$THEME_NAME"
echo "Tema zip'lendi: $ZIP_FILE"
# Production'da mevcut temayı yedekle
CURRENT_PROD_THEME=$(wp theme list --status=active
--field=name --path="$PROD_PATH")
echo "Production'daki aktif tema: $CURRENT_PROD_THEME"
# Yeni temayı production'a kur
wp theme install "$ZIP_FILE" --force --path="$PROD_PATH"
# Aktifleştir
wp theme activate "$THEME_NAME" --path="$PROD_PATH"
echo "Tema production'a başarıyla aktarıldı!"
echo "Eski tema: $CURRENT_PROD_THEME"
echo "Yeni tema: $THEME_NAME"
Senaryo 4: WordPress Multisite’ta Tema Yönetimi
Multisite kurulumda temalar biraz farklı çalışır. Önce network genelinde enable etmeniz gerekir:
# Temayı network genelinde enable et
wp theme enable astra --network
# Belirli bir site için aktifleştir
wp theme enable astra --url=site2.example.com
# Network genelinde tüm sitelerde aktifleştir
wp theme enable astra --network --activate
Multisite’ta belirli bir sitenin temasını değiştirmek için:
wp theme activate astra --url=https://site2.example.com
wp theme search Komutu
Bir tema kurmadan önce WordPress.org’da aramak isterseniz:
wp theme search ecommerce
Belirli sayıda sonuç görmek için:
wp theme search ecommerce --per-page=5
Sadece belirli alanları görmek için:
wp theme search blog --fields=name,slug,rating
Tema Bilgisi Almak
Kurulu bir tema hakkında detaylı bilgi almak için:
wp theme get astra
Belirli bir alanı almak için:
wp theme get astra --field=version
Bu özellikle monitoring ve raporlama script’lerinde kullanışlıdır. Hangi temayı hangi versiyonda kullandığınızı loglayabilirsiniz:
ACTIVE_THEME=$(wp theme list --status=active --field=name)
THEME_VERSION=$(wp theme get $ACTIVE_THEME --field=version)
echo "Site: $(wp option get siteurl)"
echo "Aktif tema: $ACTIVE_THEME v$THEME_VERSION"
Sık Karşılaşılan Hatalar ve Çözümleri
“Theme is already active” Hatası
Aktif olan temayı tekrar aktifleştirmeye çalışırken bu hatayı alırsınız. Script’lerde bu durumu handle etmek için:
CURRENT=$(wp theme list --status=active --field=name)
if [ "$CURRENT" != "astra" ]; then
wp theme activate astra
else
echo "Astra zaten aktif"
fi
“Could not authenticate you” Hatası
WP CLI komutlarını yanlış kullanıcıyla çalıştırıyorsanız bu hata gelir. Web sunucu kullanıcısıyla çalıştırın:
sudo -u www-data wp theme install astra --path=/var/www/html
Permission Hatası Çözümü
Tema dosyaları kurulurken izin sorunlarıyla karşılaşabilirsiniz:
# WordPress dizini sahipliğini düzelt
sudo chown -R www-data:www-data /var/www/html/wp-content/themes/
# Sonra komutu çalıştır
wp theme install astra --allow-root
“The package could not be installed” Hatası
Bu genellikle PHP zip extension’ı eksik olduğunda olur:
# Ubuntu/Debian
sudo apt-get install php-zip
# CentOS/RHEL
sudo yum install php-zip
# Sonra web sunucuyu yeniden başlat
sudo systemctl restart nginx php-fpm
Path ve Config Parametreleri
Birden fazla WordPress kurulumu yönetiyorsanız --path parametresi kritiktir:
wp theme install astra --path=/var/www/site1
wp theme install generatepress --path=/var/www/site2
Veya wp-cli.yml dosyası oluşturarak default path’i belirleyebilirsiniz. Her proje dizinine bir wp-cli.yml koyun:
# /var/www/site1/wp-cli.yml içeriği
path: /var/www/site1
Artık o dizinden çalışırken --path belirtmenize gerek kalmaz.
Sonuç
wp theme komutları, WordPress tema yönetimini terminal üzerinden yapmanın en verimli yoludur. Günlük işlerinizde şu pratikleri benimsemenizi öneririm:
- Yeni site açarken
wp theme installve--activatekombinasyonunu kullanın, admin panelini açmaya gerek yok - Güncelleme yapmadan önce mutlaka
--dry-runile ne olacağını görün ve veritabanı yedeği alın - Toplu işlemler için shell script’leri yazın, aynı işi on kez tekrar etmeyin
- Multisite yönetiminde
--urlve--networkparametrelerini doğru kullanın - CI/CD pipeline’larına tema kurulum ve aktivasyon komutlarını entegre edin
WP CLI genel olarak öğrenme eğrisi düşük ama getirisi yüksek bir araç. wp theme komutlarını özümsedikten sonra wp plugin, wp user, wp db gibi diğer komutları da keşfetmenizi şiddetle tavsiye ederim. Sysadmin hayatınız inanılmaz kolaylaşacak.
