wp package ile WP-CLI Paket Yönetimi
WP-CLI kullanıyorsanız muhtemelen wp post, wp user ya da wp plugin komutlarına aşinasınızdır. Ama WP-CLI’nin gerçek gücü, kendi paket ekosisteminde gizli. wp package komutu sayesinde topluluk tarafından geliştirilmiş onlarca ek aracı WP-CLI’ye entegre edebilir, iş akışlarınızı dramatik biçimde hızlandırabilirsiniz. Bu yazıda wp package komutunu her yönüyle ele alacağız; kurulumdan kaldırmaya, paket geliştirmeden production ortamında güvenli kullanıma kadar.
wp package Nedir ve Neden Önemlidir?
WP-CLI, çekirdek komutlarının ötesine geçmek isteyenler için bir paket yönetim sistemi sunar. Bu sistem aslında Composer altyapısını kullanır; dolayısıyla PHP geliştiricileri için oldukça tanıdık gelecektir. Paketler genellikle GitHub veya Packagist üzerinden dağıtılır ve WP-CLI’nin ~/.wp-cli/packages/ dizinine kurulur.
Peki neden core’a dahil edilmemiş bu araçlara ihtiyaç duyulur? Çünkü her sitenin ihtiyacı farklıdır. Bir e-ticaret sitesi için toplu ürün güncelleme aracına ihtiyaç duyarken, bir ajans belki de çoklu site yönetim araçlarına ihtiyaç duyar. Paket sistemi, WP-CLI’yi herkes için şişirmeden, herkese ihtiyacı olanı sunar.
Temel wp package Komutları
wp package komutunun alt komutları şunlardır:
- wp package browse: Mevcut paketleri listeler
- wp package install: Yeni paket kurar
- wp package list: Kurulu paketleri gösterir
- wp package uninstall: Paketi kaldırır
- wp package update: Kurulu paketleri günceller
- wp package path: Paket dizininin yolunu gösterir
Mevcut Paketlere Göz Atmak
Hangi paketlerin mevcut olduğunu görmek için:
wp package browse --fields=name,description,url
Bu komut çıktısı oldukça uzun olabilir. Belirli bir anahtar kelimeyle filtrelemek isterseniz grep kullanabilirsiniz:
wp package browse --fields=name,description | grep -i "media"
ya da sadece paket isimlerini görmek için:
wp package browse --fields=name --format=ids
Paket Kurmak
En temel kullanım şekli şöyle:
wp package install wp-cli/doctor-command
Bu komut, wp-cli/doctor-command paketini resmi WP-CLI organizasyonundan çeker ve global olarak kurar. Kurulum tamamlandığında wp doctor komutu kullanılabilir hale gelir.
GitHub’daki herhangi bir paketi de kurabilirsiniz:
wp package install [email protected]:vendor/package-name.git
Ya da Packagist’ten belirli bir sürümle:
wp package install wp-cli/doctor-command:@stable
Geliştirme sürümünü denemek isterseniz:
wp package install wp-cli/doctor-command:dev-main
Kurulu Paketleri Yönetmek
Kurulu Paketleri Listeleme
wp package list
Çıktıda paket adı, sürümü ve açıklamasını görürsünüz. Sadece paket adlarını almak isterseniz:
wp package list --fields=name --format=csv
Bu çıktıyı bir script içinde kullanmak çok pratiktir. Örneğin tüm kurulu paketleri bir dosyaya aktarmak için:
wp package list --fields=name --format=csv > installed-packages.txt
Paketleri Güncellemek
Tüm kurulu paketleri tek seferde güncellemek için:
wp package update
Bu komut oldukça basit görünse de arka planda Composer’ı çalıştırır ve tüm bağımlılıkları günceller. Production sunucusunda çalıştırmadan önce mutlaka test ortamında deneyin; sürüm uyumsuzlukları nadir de olsa yaşanabilir.
Paket Kaldırmak
wp package uninstall wp-cli/doctor-command
Bağımlılıkların da kaldırılmasını isterseniz ek bir işlem gerekmez; WP-CLI bunu otomatik olarak halleder. Ancak bazen artık kullanılmayan bağımlılıkların temizlenmediğini görürsünüz. Bu durumda Composer ile manuel temizlik yapabilirsiniz:
cd ~/.wp-cli/packages && composer install --no-dev
Gerçek Dünya Senaryoları
Senaryo 1: Doctor Command ile Site Sağlığını Otomatik Kontrol Etmek
Bir ajans için birden fazla WordPress sitesini yönettiğinizi düşünün. Her sabah tüm sitelerin sağlıklı olup olmadığını manuel kontrol etmek saatler alabilir. doctor-command paketi tam bu sorunu çözer.
# Önce paketi kur
wp package install wp-cli/doctor-command
# Tek bir site için kontrol
wp doctor check --all --path=/var/www/html/musteri1.com
# Kritik sorunları filtrele
wp doctor check --all --path=/var/www/html/musteri1.com | grep -i "error|warning"
Bunu bir bash script’e dönüştürerek tüm siteleri tarayabilirsiniz:
#!/bin/bash
SITES=(
"/var/www/html/site1"
"/var/www/html/site2"
"/var/www/html/site3"
)
for site in "${SITES[@]}"; do
echo "=== Kontrol ediliyor: $site ==="
wp doctor check --all --path="$site" --format=json |
python3 -c "
import sys, json
data = json.load(sys.stdin)
for check in data:
if check['status'] in ['error', 'warning']:
print(f"[{check['status'].upper()}] {check['name']}: {check['message']}")
"
done
Senaryo 2: Scaffold Package ile Özel Komut Geliştirme
Kendi WP-CLI paketinizi yazmak istiyorsanız scaffold package komutu işinizi kolaylaştırır:
# scaffold paketini kur
wp package install wp-cli/scaffold-package-command
# Yeni paket iskeleti oluştur
wp scaffold package vendor/my-custom-command --dir=/home/user/projects/my-command
Bu komut çalıştıktan sonra tam bir PHP paketi yapısı oluşturulur: src/ dizini, composer.json, README.md, testler için iskelet ve hepsi hazır. Geliştirmeye direkt başlayabilirsiniz.
Geliştirdiğiniz paketi test aşamasında global kurmadan önce lokal olarak bağlamak için:
wp package install /home/user/projects/my-command
Senaryo 3: Find Replace Extended ile Veritabanı Operasyonları
Standart wp search-replace çoğu zaman yeterlidir, ama bazı edge case’lerde yetersiz kalır. Topluluk paketleri burada devreye girebilir. Örneğin bir site taşıma senaryosunda:
# Önce mevcut durumu yedekle
wp db export backup-before-replace.sql --path=/var/www/html/site
# URL değişikliği yap
wp search-replace 'http://eski-domain.com' 'https://yeni-domain.com'
--all-tables
--report-changed-only
--dry-run
# Dry-run sonuçları tatmin ediciyse gerçek değişikliği yap
wp search-replace 'http://eski-domain.com' 'https://yeni-domain.com'
--all-tables
--report-changed-only
Senaryo 4: Paket Listesini Versiyon Kontrolüne Almak
Ekip çalışmasında herkesin aynı WP-CLI paketlerini kullanması kritiktir. Bunun için kurulu paketleri export edip versiyon kontrolüne alabilirsiniz:
# Paket listesini JSON formatında kaydet
wp package list --format=json > .wp-cli-packages.json
# Sadece isim ve sürüm bilgisiyle kaydet
wp package list --fields=name,version --format=json > wp-cli-packages.json
Yeni bir ekip üyesi ya da yeni bir sunucu kurulumunda bu listeyi kullanmak için küçük bir script yazabilirsiniz:
#!/bin/bash
# restore-wp-cli-packages.sh
echo "WP-CLI paketleri kuruluyor..."
PACKAGES=(
"wp-cli/doctor-command"
"wp-cli/scaffold-package-command"
"aaemnnosttv/wp-cli-login-command"
)
for package in "${PACKAGES[@]}"; do
echo "Kuruluyor: $package"
wp package install "$package" 2>/dev/null || echo "HATA: $package kurulamadı"
done
echo "Tüm paketler kuruldu."
wp package list
Paket Dizin Yapısını Anlamak
WP-CLI paketleri varsayılan olarak ~/.wp-cli/packages/ altına kurulur. Bu dizini incelemek bazen sorunları anlamak için gerekli olabilir:
# Paket dizinini öğren
wp package path
# Dizin içeriğini gör
ls -la $(wp package path)
# composer.json'u incele
cat $(wp package path)/composer.json
Eğer özel bir dizin kullanmak isterseniz, ~/.wp-cli/config.yml dosyasına ekleme yapabilirsiniz:
packages:
path: /opt/wp-cli-packages
Bu özellikle sistem genelinde tüm kullanıcıların aynı paketlere erişmesini sağlamak istediğinizde işe yarar. Root ya da sudo yetkisiyle kurulmuş bir WP-CLI’de bu ayar, tüm kullanıcılar için paketleri merkezi yönetmenizi sağlar.
Güvenlik ve Production Ortamında Dikkat Edilmesi Gerekenler
Production sunucularında paket yönetimi yaparken birkaç önemli noktaya dikkat etmek gerekir.
Paket kaynaklarını doğrulayın. WP-CLI resmi organizasyonunun (wp-cli/) paketleri genellikle güvenilirdir. Üçüncü taraf paketler için GitHub sayfasını inceleyin; son commit tarihi, issue sayısı ve katkıda bulunan geliştirici profili iyi birer göstergedir.
Bağımlılık çakışmalarına dikkat edin. Paketler kendi bağımlılıklarını getirir. Birden fazla paket aynı kütüphanenin farklı sürümlerine bağımlıysa Composer çakışma rapor edebilir:
# Bağımlılık durumunu kontrol et
cd ~/.wp-cli/packages && composer diagnose
# Bağımlılıkları detaylı göster
composer show --installed
PHP sürümü uyumluluğunu kontrol edin. Sunucunuzdaki PHP sürümüyle paketin gerektirdiği sürüm uyuşmuyorsa kurulum başarısız olur ya da sessizce çalışmaz. Kurulumdan önce:
php --version
wp --info
çıktılarını kontrol etmek iyi alışkanlıktır.
Yetki sorunlarına dikkat edin. WP-CLI’yi hem root hem de normal kullanıcı olarak çalıştırıyorsanız, root olarak kurulan paketler normal kullanıcıya görünmeyebilir. Her kullanıcı kendi home dizininde ayrı bir paket deposu tutar.
Popüler ve İşe Yarar Paketler
Topluluğun geliştirdiği ve sık kullanılan bazı paketler şunlardır:
- aaemnnosttv/wp-cli-login-command: Parola girmeden admin olarak giriş yapmanızı sağlar; geliştirme ortamlarında çok işe yarar
- wp-cli/doctor-command: Site sağlığı kontrolleri; dosya izinleri, veritabanı durumu, cron gibi konuları denetler
- wp-cli/scaffold-package-command: Yeni WP-CLI paketi geliştirmek için iskelet oluşturur
- runcommand/hook: WP-CLI komutlarına hook’lar eklemenizi sağlar
- wp-cli/profile-command: WP yükleme sürecini profillemenizi sağlar; performans sorunlarını bulmak için harika
wp-cli/login-command paketini bir geliştirme senaryosunda nasıl kullanacağınıza bakalım:
# Paketi kur
wp package install aaemnnosttv/wp-cli-login-command
# Magic login linki oluştur
wp login create admin --path=/var/www/html/dev-site
# URL direkt tarayıcıda açılabilir, parola gerekmez
# Çıktı: http://dev-site.local/?action=magic-login&user=admin&token=xxxxx
Bu özellik özellikle staging ortamlarında client’lara geçici erişim sağlamak için de kullanılabilir.
Paket Geliştirme: Kendi Komutunuzu Yazmak
WP-CLI paket ekosistemi yalnızca başkalarının yazdığı araçları kullanmakla sınırlı değil. Kendinize özel komutlar yazıp bunları yerel ya da ekip genelinde kullanabilirsiniz.
Örnek olarak, tüm WooCommerce siparişlerini tek komutla CSV’ye aktaran basit bir komut düşünelim. Önce iskelet oluşturun:
wp scaffold package ajansiniz/wc-order-export --dir=~/projects/wc-order-export
Oluşturulan src/Command.php dosyasını düzenleyerek komutunuzu yazarsınız. Ardından:
# Geliştirme sırasında lokal kurulum
wp package install ~/projects/wc-order-export
# Komutu test et
wp wc-order-export run --status=completed --format=csv > orders.csv
Paketinizi GitHub’a push ettiğinizde başka sistem yöneticileri de şu şekilde kurabilir:
wp package install [email protected]:ajansiniz/wc-order-export.git
Sorun Giderme
Paket kurulum veya kullanım sorunlarında işe yarayan birkaç yaklaşım:
# WP-CLI debug modunda çalıştır
wp package install wp-cli/doctor-command --debug
# Composer log'larına bak
wp package install wp-cli/doctor-command --debug 2>&1 | grep -i "composer|error|warning"
# Paket dizinini sıfırla (dikkatli olun, tüm paketler silinir)
rm -rf ~/.wp-cli/packages
mkdir -p ~/.wp-cli/packages
Bazen Composer cache’i sorun çıkarır:
# Composer cache temizle
composer clear-cache
# WP-CLI önbelleğini temizle
wp cli cache clear
PHP memory_limit çok düşük ayarlıysa büyük paketlerin kurulumu başarısız olabilir. php.ini dosyasında ya da komut satırında bunu aşabilirsiniz:
php -d memory_limit=512M $(which wp) package install wp-cli/doctor-command
CI/CD Pipeline’larında wp package Kullanımı
Otomatik deployment süreçlerinde WP-CLI paketlerini de dahil etmek isteyebilirsiniz. Bir GitHub Actions örneği:
# .github/workflows/wordpress-health-check.yml
name: WordPress Health Check
on:
schedule:
- cron: '0 8 * * *'
jobs:
health-check:
runs-on: ubuntu-latest
steps:
- name: WP-CLI Kur
run: |
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp
- name: Doctor Command Kur
run: wp package install wp-cli/doctor-command
- name: Site Sağlığını Kontrol Et
run: |
wp doctor check --all
--path=/var/www/html
--ssh=deploy@production-server
--format=json | tee health-report.json
Bu yaklaşımla her sabah otomatik sağlık raporu alabilir, kritik sorunlar için Slack ya da e-posta bildirimi entegre edebilirsiniz.
Sonuç
wp package sistemi, WP-CLI’yi sıradan bir komut satırı aracından tam kapsamlı bir WordPress yönetim platformuna dönüştüren mekanizmadır. Topluluk tarafından geliştirilen paketler sayesinde sitenizin sağlığını otomatik kontrol edebilir, geliştirme süreçlerinizi hızlandırabilir ve tekrar eden görevleri script’lere bağlayabilirsiniz.
Başlangıç için wp-cli/doctor-command ve aaemnnosttv/wp-cli-login-command paketlerini kurmanızı tavsiye ederim; her iki paket de günlük iş akışınıza hemen katkı sağlar. Ekibinizle çalışıyorsanız kurulu paket listesini versiyon kontrolüne alarak tutarlı geliştirme ortamları oluşturabilirsiniz.
Production ortamında paket kaynaklarını doğrulamayı, PHP sürümü uyumluluğunu kontrol etmeyi ve büyük güncellemeleri test ortamında denemeyi alışkanlık haline getirin. WP-CLI paket ekosistemi aktif biçimde gelişmeye devam ediyor; wp package browse çıktısını ara sıra gözden geçirmek, işinize yarayacak yeni araçları erken keşfetmenizi sağlar.
