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 install ve --activate kombinasyonunu kullanın, admin panelini açmaya gerek yok
  • Güncelleme yapmadan önce mutlaka --dry-run ile 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 --url ve --network parametrelerini 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.

Bir yanıt yazın

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