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 kurulumuwp plugin update --all: Tüm eklentileri güncellemewp plugin list --update=available: Güncelleme bekleyenleri listelemewp 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.
