WP CLI ile WordPress Eklenti Kurulum, Güncelleme ve Silme

WordPress sitenizi yönetirken en çok zaman harcadığınız işlemlerin başında eklenti kurulum, güncelleme ve silme işlemleri gelir. Özellikle birden fazla siteniz varsa ya da sunucuya SSH erişiminiz mevcut ama WordPress admin paneline girmek istemiyorsanız, WP CLI’nın wp plugin komutu tam size göre. Bu yazıda wp plugin komutunu her açıdan ele alacağız, gerçek dünya senaryolarıyla nasıl kullanacağınızı göstereceğiz.

WP Plugin Komutuna Genel Bakış

WP CLI’daki wp plugin komutu, WordPress eklentileriyle ilgili neredeyse her işlemi terminal üzerinden yapmanızı sağlar. Admin panelinde tıklamak yerine tek satır komutla onlarca eklentiyi yönetebilirsiniz. Bu özellikle DevOps pipeline’larında, toplu site yönetiminde ve otomatik bakım scriptlerinde büyük kolaylık sağlar.

Komutun temel yapısı şu şekilde:

wp plugin <komut> [seçenekler]

Hangi alt komutların mevcut olduğunu görmek için:

wp plugin --help

Eklenti Kurulumu

WordPress.org’dan Eklenti Kurma

En basit haliyle bir eklenti kurmak için sadece eklentinin slug adını bilmeniz yeterli. Slug, WordPress.org’daki URL’de geçen kısa isimdir. Örneğin https://wordpress.org/plugins/woocommerce/ adresindeki slug woocommerce olur.

wp plugin install woocommerce

Bu komut eklentiyi indirir ama aktif etmez. Kurulum sonrasında hemen aktif etmek istiyorsanız --activate parametresini kullanın:

wp plugin install woocommerce --activate

Belirli bir sürümü kurmak istiyorsanız --version parametresiyle bunu belirtebilirsiniz. Özellikle eski bir sürümle uyumluluk testi yapıyorsanız ya da belirli bir sürümde kalmak istiyorsanız bu parametre işe yarar:

wp plugin install woocommerce --version=7.5.0 --activate

Birden Fazla Eklentiyi Tek Seferde Kurma

Yeni bir WordPress kurulumu yapıyorsanız ve standart eklenti setiinizi kurmak istiyorsanız, hepsini tek komutla halledebilirsiniz:

wp plugin install contact-form-7 yoast-seo wordfence redis-cache --activate

Bu yaklaşım özellikle site klonlama veya yeni ortam kurulumlarında çok işe yarar. Onlarca eklentiyi tek tek kurmak yerine bir satırda halledersiniz.

ZIP Dosyasından Eklenti Kurma

Ücretsiz olmayan premium eklentileri ya da özel geliştirdiğiniz eklentileri ZIP dosyasından kurabilirsiniz:

wp plugin install /var/www/plugins/my-premium-plugin.zip --activate

URL üzerinden de kurulum yapılabilir. Bir CDN ya da özel sunucuda barındırılan ZIP dosyasını doğrudan çekebilirsiniz:

wp plugin install https://example.com/downloads/my-plugin.zip --activate

Bu yöntem özellikle CI/CD süreçlerinde, kendi geliştirdiğiniz eklentilerin deployment’ında çok kullanışlıdır. Jenkins veya GitHub Actions üzerinden otomatik deploy yaparken bu komutu kullanıyor olabilirsiniz.

Gerçek Dünya Senaryosu: Yeni Müşteri Sitesi Kurulumu

Bir ajans çalıştırdığınızı düşünün. Her yeni müşteri sitesi için aynı temel eklenti setini kurmanız gerekiyor. Bunun için küçük bir bash scripti hazırlayabilirsiniz:

#!/bin/bash
# Standart eklenti seti kurulum scripti
SITE_PATH="/var/www/html/yeni-site"

echo "Temel eklentiler kuruluyor..."
wp plugin install 
    contact-form-7 
    yoast-seo 
    wordfence 
    wp-super-cache 
    updraftplus 
    --activate 
    --path=$SITE_PATH

echo "Premium eklentiler kuruluyor..."
wp plugin install /opt/premium-plugins/elementor-pro.zip --activate --path=$SITE_PATH
wp plugin install /opt/premium-plugins/woocommerce-subscriptions.zip --activate --path=$SITE_PATH

echo "Kurulum tamamlandi!"
wp plugin list --path=$SITE_PATH

Bu scripti bir kez hazırlayıp her yeni site kurulumunda çalıştırabilirsiniz. Dakikalar içinde standart kurulumunuz hazır olur.

Eklenti Listeleme ve Durum Kontrolü

Kurulu eklentileri listelemek için:

wp plugin list

Bu komut eklenti adını, durumunu (aktif/pasif/must-use), sürümünü ve güncel olup olmadığını gösterir. Daha odaklı çıktılar almak için filtreler kullanabilirsiniz.

Sadece aktif eklentileri görmek için:

wp plugin list --status=active

Sadece güncellenmeye ihtiyaç duyan eklentileri listelemek için:

wp plugin list --update=available

Belirli alanları görmek isterseniz --fields parametresi işe yarar:

wp plugin list --fields=name,version,update_version,status

Eklenti Güncelleme

Tek Eklenti Güncelleme

Belirli bir eklentiyi güncellemek için:

wp plugin update woocommerce

Tüm Eklentileri Güncelleme

Kurulu tüm eklentileri tek komutla güncellemek için --all parametresini kullanın:

wp plugin update --all

Bu komutu çalıştırmadan önce ne kadar güncelleme olduğunu görmek isterseniz --dry-run parametresi mükemmel bir seçenek. Herhangi bir değişiklik yapmadan neyin güncelleneceğini gösterir:

wp plugin update --all --dry-run

Güncelleme Öncesi Yedek Alma

Üretim ortamında eklenti güncellemesi yapmadan önce her zaman yedek alın. WP CLI ile bunu da otomatize edebilirsiniz:

#!/bin/bash
# Güvenli eklenti güncelleme scripti

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/var/backups/wordpress"
SITE_PATH="/var/www/html/sitem"

echo "[$DATE] Yedek aliniyor..."
wp db export $BACKUP_DIR/db_backup_$DATE.sql --path=$SITE_PATH
tar -czf $BACKUP_DIR/plugins_backup_$DATE.tar.gz $SITE_PATH/wp-content/plugins/

echo "Mevcut güncellemeler kontrol ediliyor..."
wp plugin update --all --dry-run --path=$SITE_PATH

echo "Güncellemeler uygulanıyor..."
wp plugin update --all --path=$SITE_PATH

echo "Güncelleme tamamlandi. Log:"
wp plugin list --update=available --path=$SITE_PATH

Belirli Sürüme Güncelleme veya Düşürme

Bazen güncelleme sonrası sorun yaşarsınız ve eski sürüme dönmeniz gerekir. WP CLI ile bunu yapabilirsiniz:

wp plugin install woocommerce --version=7.4.0 --force

--force parametresi, eklenti zaten kurulu olsa bile üzerine yazar. Sürüm düşürme işlemi için bu parametreyi kullanmanız şart.

Güncellemeyi Engelleme

Bazı eklentileri belirli bir sürümde tutmak isteyebilirsiniz. WP CLI ile bu işlemi doğrudan yapamıyorsunuz ama sistematik bir yaklaşımla çözebilirsiniz. Kritik eklentileri güncellemeden önce doğrulayan bir script yazabilirsiniz:

#!/bin/bash
# Belirli eklentileri güncellemeden diğerlerini güncelle
EXCLUDED="woocommerce elementor"

wp plugin list --update=available --field=name | while read plugin; do
    if echo $EXCLUDED | grep -w $plugin > /dev/null; then
        echo "$plugin atlanıyor (korumalı eklenti)"
    else
        echo "$plugin güncelleniyor..."
        wp plugin update $plugin
    fi
done

Eklenti Aktif Etme ve Devre Dışı Bırakma

Tek Eklenti Aktif Etme

wp plugin activate contact-form-7

Tüm Eklentileri Aktif Etme

wp plugin activate --all

Eklenti Devre Dışı Bırakma

Sorun giderme sürecinde eklentileri tek tek devre dışı bırakabilirsiniz. Örneğin bir CSS çakışması yaşıyorsunuz ve hangi eklentinin neden olduğunu bulmaya çalışıyorsunuz:

wp plugin deactivate contact-form-7

Tüm eklentileri devre dışı bırakmak, özellikle “beyaz ekran ölümü” sorunlarını çözerken çok işe yarar:

wp plugin deactivate --all

Bu komutu çalıştırdıktan sonra eklentileri tek tek aktif edip sorunu hangi eklentinin yarattığını bulabilirsiniz.

Eklenti Silme

Tek Eklenti Silme

Bir eklentiyi silmeden önce devre dışı bırakmanız gerekir. Ya da --deactivate parametresiyle birlikte silme işlemini tek adımda yapabilirsiniz:

wp plugin deactivate my-old-plugin
wp plugin delete my-old-plugin

Ya da daha kısa yol:

wp plugin delete my-old-plugin --deactivate

Birden Fazla Eklentiyi Silme

wp plugin delete plugin-a plugin-b plugin-c

Gerçek Dünya Senaryosu: Temizlik İşlemi

Bir müşteriden devraldığınız bir site var. Onlarca kullanılmayan, devre dışı bırakılmış eklenti mevcut ve bunları temizlemeniz gerekiyor. Önce neyin devre dışı olduğunu görelim:

wp plugin list --status=inactive --field=name

Bu komutun çıktısını alıp toplu silme işlemi yapabilirsiniz:

wp plugin list --status=inactive --field=name | xargs wp plugin delete

Bu tek satır komut, tüm pasif eklentileri listeler ve onları siler. Üretim ortamında bunu kullanmadan önce listeleyi gözden geçirmenizi öneririm. Önce çıktıyı görün, sonra karar verin.

Eklenti Dosyalarını Doğrulama

WordPress.org’dan kurduğunuz eklentilerin dosyalarının bozulup bozulmadığını veya değiştirilip değiştirilmediğini kontrol edebilirsiniz. Bu özellikle güvenlik denetimleri için çok değerlidir:

wp plugin verify-checksums --all

Belirli bir eklenti için:

wp plugin verify-checksums woocommerce

Eğer bir eklenti dosyasında beklenmedik değişiklik varsa (hack girişimi, manuel düzenleme vs.) bu komut sizi uyarır. Güvenlik bakım rutininize bu komutu eklemenizi kesinlikle tavsiye ederim.

Eklenti Bilgisi Alma

Bir eklenti hakkında detaylı bilgi almak için:

wp plugin get woocommerce

Bu komut eklentinin adını, başlığını, yazarını, sürümünü, durumunu ve diğer detayları gösterir. Belirli bir alan almak isterseniz:

wp plugin get woocommerce --field=version

Bu yaklaşım scriptlerde çok kullanışlıdır. Örneğin WooCommerce sürümünü kontrol edip belirli bir işlem yapmanız gerekiyorsa:

#!/bin/bash
WC_VERSION=$(wp plugin get woocommerce --field=version)
echo "Mevcut WooCommerce sürümü: $WC_VERSION"

if [[ "$WC_VERSION" < "8.0.0" ]]; then
    echo "WooCommerce güncellenmesi gerekiyor!"
    wp plugin update woocommerce
fi

WordPress.org’da Eklenti Arama

Terminal’den ayrılmadan eklenti araması da yapabilirsiniz:

wp plugin search "contact form" --per-page=5

Bu komut WordPress.org eklenti dizininde arama yapar ve sonuçları listeler. Çıktıda eklenti slug adlarını, başlıklarını ve yıldız puanlarını görebilirsiniz.

Multisite Ortamında Eklenti Yönetimi

WordPress Multisite kurulumlarında eklentileri ağ genelinde aktif etmek için --network parametresini kullanabilirsiniz:

wp plugin activate woocommerce --network

Belirli bir alt siteye odaklanmak için --url parametresiyle siteyi belirtin:

wp plugin activate contact-form-7 --url=subsite.example.com

Tüm alt sitelerde hangi eklentilerin aktif olduğunu görmek için farklı bir yaklaşım gerekir. Önce site listesini alıp her biri için eklentileri kontrol etmeniz gerekir:

wp site list --field=url | while read url; do
    echo "=== $url ==="
    wp plugin list --url=$url --status=active --fields=name,version
done

Güvenlik Odaklı Eklenti Denetim Scripti

Düzenli güvenlik denetimi için kullanabileceğiniz bir script:

#!/bin/bash
# Haftalık eklenti güvenlik denetimi
SITE_PATH="/var/www/html"
LOG_FILE="/var/log/wp-security-audit.log"
DATE=$(date +%Y-%m-%d)

echo "[$DATE] Güvenlik denetimi başlıyor..." | tee -a $LOG_FILE

# Güncellenmeye ihtiyaç duyan eklentileri listele
echo "=== Güncelleme Bekleyen Eklentiler ===" | tee -a $LOG_FILE
wp plugin list --update=available --fields=name,version,update_version --path=$SITE_PATH | tee -a $LOG_FILE

# Checksum doğrulama
echo "=== Checksum Doğrulama ===" | tee -a $LOG_FILE
wp plugin verify-checksums --all --path=$SITE_PATH | tee -a $LOG_FILE

# Devre dışı eklentileri listele
echo "=== Devre Dışı Eklentiler ===" | tee -a $LOG_FILE
wp plugin list --status=inactive --fields=name,version --path=$SITE_PATH | tee -a $LOG_FILE

echo "[$DATE] Denetim tamamlandi." | tee -a $LOG_FILE

Bu scripti cron ile haftalık çalıştırabilirsiniz:

0 6 * * 1 /usr/local/bin/wp-security-audit.sh

Sık Yapılan Hatalar ve Çözümleri

Yetki hatası alıyorsanız: WP CLI komutlarını doğru kullanıcıyla çalıştırmanız gerekir. Web sunucu kullanıcısı (www-data, nginx vs.) yerine genellikle site sahibi kullanıcıyla çalıştırmanız önerilir. Eğer root olarak çalıştırmanız gerekiyorsa --allow-root parametresini ekleyin:

wp plugin update --all --allow-root

wp komutu bulunamıyor hatası: WP CLI’nın PATH’e eklendiğinden emin olun. Genellikle /usr/local/bin/wp konumundadır. Doğrudan yolu belirterek çalıştırabilirsiniz:

/usr/local/bin/wp plugin list

Yanlış dizinde çalışıyorsunuz: WordPress kurulumunun olduğu dizinde değilseniz --path parametresini kullanın:

wp plugin list --path=/var/www/html/wordpress

Bellek hatası alıyorsanız: Özellikle büyük sitelerle çalışırken bellek limiti sorunu yaşayabilirsiniz:

wp plugin update --all --max-execution-time=300 --memory-limit=512M

Sonuç

wp plugin komutu, WordPress eklenti yönetimini terminal üzerinden tam anlamıyla kontrol altına almanızı sağlar. Tek bir eklenti kurmaktan yüzlerce siteyi toplu güncellemeye kadar geniş bir kullanım yelpazesi sunar. Özellikle otomasyona önem veriyorsanız, bu komutları bash scriptleriyle birleştirerek bakım süreçlerinizi ciddi ölçüde hızlandırabilirsiniz.

Günlük pratikte en çok kullanacağınız komutlar şunlar olacak:

  • wp plugin install --activate: Yeni eklenti kurulumu
  • wp plugin update --all: Tüm eklentileri güncelleme
  • wp plugin list --update=available: Güncelleme bekleyenleri listeleme
  • wp plugin verify-checksums --all: Güvenlik doğrulaması
  • wp plugin deactivate --all: Sorun gidermede tüm eklentileri kapatma

Bu komutları CI/CD pipeline’larınıza, cron joblarınıza ve deployment scriptlerinize entegre ettiğinizde WordPress yönetiminin ne kadar verimli hale geldiğini göreceksiniz. Admin panelini sadece gerçekten grafik arayüz gerektiren işlemler için açar hale gelirsiniz, geri kalanını terminalden halledersiniz.

Bir yanıt yazın

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