WP-CLI Nedir: Kurulum ve Temel Kullanım
Sunucuya SSH ile bağlanıp WordPress’te bir eklenti güncellemek için admin panelini açmak zorunda kalmak, onlarca siteyi yöneten bir sysadmin için gerçek bir zaman kaybıdır. WP-CLI işte tam bu noktada devreye giriyor. WordPress’i komut satırından yönetmeni sağlayan bu araç, günlük işleri otomatize etmenden tutun da toplu site yönetimine kadar hayatını ciddi ölçüde kolaylaştırıyor.
WP-CLI Nedir?
WP-CLI, WordPress için geliştirilmiş resmi komut satırı arayüzüdür. Bir WordPress kurulumunu yönetmek için ihtiyaç duyabileceğin neredeyse her şeyi terminal üzerinden yapmanı sağlar. Eklenti kurulumu, tema yönetimi, veritabanı işlemleri, kullanıcı yönetimi, önbellek temizleme ve daha fazlası, hepsi tek bir araçla ve tek bir satır komutla halledilebilir.
Peki neden WP-CLI kullanmalısın? Şu senaryoyu düşün: 50 WordPress sitesi barındıran bir paylaşımlı hosting sunucusu yönetiyorsun ve bir güvenlik açığı nedeniyle tüm sitelerdeki belirli bir eklentiyi güncellemen gerekiyor. Admin panelinden tek tek girmek yerine, bir shell scriptiyle tüm siteleri dakikalar içinde güncelleyebilirsin.
WP-CLI’nin temel avantajları şunlardır:
- Tekrarlayan görevleri bash script ile otomatize edebilirsin
- Admin paneline ihtiyaç duymadan WordPress yönetebilirsin
- Cron job’larla zamanlanmış görevler oluşturabilirsin
- Birden fazla siteyi tek bir scriptle yönetebilirsin
- Uzak sunucularda SSH üzerinden direkt çalışabilirsin
Sistem Gereksinimleri
WP-CLI’yi kurmadan önce ortamının uygun olduğundan emin olman gerekiyor. Minimum gereksinimler oldukça mütevazı:
- PHP: 5.6 veya üzeri (PHP 7.4+ önerilir)
- WordPress: 3.7 veya üzeri
- İşletim Sistemi: Linux, macOS, Windows (WSL ile)
- İzinler: Web sunucusu kullanıcısına erişim
PHP sürümünü kontrol etmek için:
php --version
Eğer sunucunda birden fazla PHP sürümü varsa ve php komutu eski bir sürümü işaret ediyorsa, tam yolu kullanman gerekebilir. Örneğin /usr/bin/php8.1 --version gibi.
WP-CLI Kurulumu
Linux Üzerine Kurulum
En yaygın kurulum yöntemi, Phar dosyasını indirip çalıştırılabilir yapmaktır. Bu yöntem neredeyse tüm Linux dağıtımlarında sorunsuz çalışır:
# WP-CLI phar dosyasını indir
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
# Dosyanın düzgün çalışıp çalışmadığını kontrol et
php wp-cli.phar --info
# Dosyayı çalıştırılabilir yap
chmod +x wp-cli.phar
# Sistem genelinde kullanılabilir hale getir
sudo mv wp-cli.phar /usr/local/bin/wp
Artık herhangi bir dizinden wp komutuyla erişebilirsin. Kurulumu doğrulamak için:
wp --info
Bu komut PHP sürümü, WP-CLI sürümü, işletim sistemi ve diğer bilgileri gösterir. Çıktı şuna benzer bir şey olmalı:
OS: Linux 5.15.0-91-generic #101-Ubuntu SMP
Shell: /bin/bash
PHP binary: /usr/bin/php8.1
PHP version: 8.1.27
php.ini used: /etc/php/8.1/cli/php.ini
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI version: 2.9.0
cPanel / Paylaşımlı Hosting Ortamında Kurulum
Paylaşımlı hosting kullanıyorsan ve root erişimin yoksa, WP-CLI’yi kullanıcı dizinine kurabilirsin:
# Ana dizine bin klasörü oluştur
mkdir -p ~/bin
# WP-CLI'yi bu klasöre indir
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar ~/bin/wp
# PATH'e ekle (.bashrc veya .bash_profile dosyasına)
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
WordPress Dizinleri İçin Yapılandırma
WP-CLI, çalıştırıldığı dizinde bir WordPress kurulumu arar. Farklı bir dizindeki WordPress’i yönetmek için --path parametresini kullanabilirsin:
wp --path=/var/www/html/myblog plugin list
Sık kullandığın bir kurulum için wp-cli.yml dosyası oluşturarak varsayılan ayarları belirleyebilirsin:
# WordPress kök dizinine wp-cli.yml oluştur
cat > /var/www/html/myblog/wp-cli.yml << EOF
path: /var/www/html/myblog
url: https://myblog.com
EOF
Bu dosya varsa, o dizinde çalışırken --path ve --url belirtmek zorunda kalmazsın.
Temel WP-CLI Komutları
WordPress Bilgilerini Görüntüleme
Bir siteyle çalışmaya başlamadan önce genel durumu görmek için:
# WordPress sürümünü göster
wp core version
# WordPress durumu hakkında detaylı bilgi
wp core check-update
# Genel site bilgilerini göster
wp option get siteurl
wp option get blogname
Eklenti Yönetimi
Eklenti yönetimi muhtemelen WP-CLI’nin en çok kullanılan özelliklerinden biri. Admin panelinde dakikalar süren işlemleri saniyeler içinde halledebilirsin.
# Kurulu eklentileri listele
wp plugin list
# Sadece aktif eklentileri listele
wp plugin list --status=active
# Eklenti kur ve aktifleştir
wp plugin install contact-form-7 --activate
# Birden fazla eklenti aynı anda kur
wp plugin install woocommerce jetpack wordfence --activate
# Eklenti güncelle
wp plugin update contact-form-7
# Tüm eklentileri güncelle
wp plugin update --all
# Eklentiyi devre dışı bırak
wp plugin deactivate contact-form-7
# Eklentiyi kaldır
wp plugin delete contact-form-7
Gerçek dünya senaryosu: Bir güvenlik açığı duyurusu aldın ve acilen tüm sitelerindeki eklentiyi güncellemen gerekiyor. Her siteye tek tek girip güncellemek yerine:
for site in /var/www/site1 /var/www/site2 /var/www/site3; do
echo "Updating plugins on $site..."
wp plugin update --all --path=$site
done
Tema Yönetimi
# Kurulu temaları listele
wp theme list
# Tema kur
wp theme install twentytwentyfour --activate
# Aktif temayı göster
wp theme status
# Tema güncelle
wp theme update twentytwentyfour
# Tüm temaları güncelle
wp theme update --all
Kullanıcı Yönetimi
Bir siteye admin erişimini kaybettin veya yeni bir yönetici hesabı oluşturman gerekiyor. WP-CLI ile bu iş birkaç saniye:
# Kullanıcıları listele
wp user list
# Yeni kullanıcı oluştur
wp user create john [email protected] --role=administrator --user_pass=GucluSifre123!
# Kullanıcı şifresini değiştir
wp user update admin --user_pass=YeniGucluSifre456!
# Kullanıcı rolünü değiştir
wp user update john --role=editor
# Kullanıcıyı sil
wp user delete john --reassign=1
--reassign=1 parametresi, silinen kullanıcının içeriklerini ID’si 1 olan kullanıcıya (genellikle admin) aktarır. Bu parametre olmadan içerikler de silinebilir, dikkatli ol.
Veritabanı İşlemleri
WP-CLI ile veritabanı işlemleri çok daha güvenli ve pratik hale geliyor:
# Veritabanını dışa aktar (yedek al)
wp db export backup-$(date +%Y%m%d).sql
# Veritabanını içe aktar
wp db import backup-20240115.sql
# Veritabanı bilgilerini göster
wp db info
# Direkt SQL sorgusu çalıştır
wp db query "SELECT ID, user_login, user_email FROM wp_users;"
# Veritabanını optimize et
wp db optimize
# Veritabanını onar
wp db repair
Önbellek Yönetimi
# Tüm önbelleği temizle
wp cache flush
# Object cache durumunu kontrol et
wp cache type
# Rewrite kurallarını yeniden oluştur
wp rewrite flush
# Transient'ları temizle
wp transient delete --all
İleri Düzey Kullanım Senaryoları
Toplu URL Değiştirme (Site Taşıma)
Site taşıma işlemlerinde URL değiştirme en kritik adımlardan biri. Serialized data içeren WordPress veritabanında manuel arama/değiştirme yapmak tehlikelidir, WP-CLI bunu güvenle halleder:
# Eski URL'yi yeni URL ile değiştir
wp search-replace 'http://eskisite.com' 'https://yenisite.com'
# Önce dry-run yaparak neyin değişeceğini gör
wp search-replace 'http://eskisite.com' 'https://yenisite.com' --dry-run
# Sadece belirli tablolarda değiştir
wp search-replace 'http://eskisite.com' 'https://yenisite.com' wp_posts wp_options
# Multisite ağında tüm sitelerde değiştir
wp search-replace 'http://eskisite.com' 'https://yenisite.com' --network
--dry-run parametresini her zaman önce kullanmayı alışkanlık edinmeni öneririm. Kaç yerde değişiklik yapılacağını önceden görmek, sürprizleri önler.
WordPress Core Güncellemesi
# Mevcut WordPress sürümünü kontrol et
wp core version
# Güncelleme olup olmadığını kontrol et
wp core check-update
# WordPress core'u güncelle
wp core update
# Veritabanı tablolarını güncelle (core güncellemesinden sonra önemli)
wp core update-db
Cron İşlemleri
WordPress’in sahte cron sistemiyle (wp-cron) ilgili sorunları WP-CLI üzerinden yönetebilirsin:
# Planlanmış görevleri listele
wp cron event list
# Belirli bir cron event'ini hemen çalıştır
wp cron event run wp_scheduled_delete
# Cron schedule'larını listele
wp cron schedule list
# Sahte cron yerine gerçek cron kullanmak için wp-config.php'ye ekle
wp config set DISABLE_WP_CRON true --raw
Gerçek sunucu cron’uyla WP-CLI’yi birleştirmek, WordPress cron güvenilirliğini artırmanın en iyi yoludur. Crontab’a şunu ekleyebilirsin:
# Her 5 dakikada bir WordPress cron'u çalıştır
*/5 * * * * cd /var/www/html && php wp-cli.phar cron event run --due-now --quiet
Çok Siteli (Multisite) Yönetim
Eğer WordPress Multisite kullanıyorsan, WP-CLI ağdaki tüm siteleri yönetmeni sağlar:
# Ağdaki tüm siteleri listele
wp site list
# Yeni site oluştur
wp site create --slug=yenisite --title="Yeni Site" [email protected]
# Tüm ağda eklenti aktifleştir (network activate)
wp plugin activate woocommerce --network
# Her alt sitede ayrı ayrı işlem yap
wp site list --field=url | xargs -I % wp --url=% plugin list
Medya Yönetimi
# Eksik küçük resimleri yeniden oluştur
wp media regenerate --yes
# Belirli bir resmin küçük resimlerini yeniden oluştur
wp media regenerate 123
# Medya dosyalarını içe aktar
wp media import /path/to/images/*.jpg
Tema değiştirdikten sonra farklı thumbnail boyutları nedeniyle görsel boyutlarının bozulduğu durumda wp media regenerate --yes komutu hayat kurtarır.
WP-CLI ile Güçlü Otomasyon Scriptleri
Haftalık Bakım Scripti
Aşağıdaki script, haftalık bakım görevlerini otomatik olarak gerçekleştirir:
#!/bin/bash
# wordpress-maintenance.sh
# Kullanim: ./wordpress-maintenance.sh /var/www/html/site
WP_PATH=${1:-/var/www/html/wordpress}
LOG_FILE="/var/log/wp-maintenance.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATE] Bakim basliyor: $WP_PATH" >> $LOG_FILE
# Veritabani yedegi al
wp --path=$WP_PATH db export /backups/db-$(date +%Y%m%d).sql >> $LOG_FILE 2>&1
# Eklentileri guncelle
wp --path=$WP_PATH plugin update --all >> $LOG_FILE 2>&1
# Temaları guncelle
wp --path=$WP_PATH theme update --all >> $LOG_FILE 2>&1
# WordPress core guncelle
wp --path=$WP_PATH core update >> $LOG_FILE 2>&1
wp --path=$WP_PATH core update-db >> $LOG_FILE 2>&1
# Onbellegi temizle
wp --path=$WP_PATH cache flush >> $LOG_FILE 2>&1
wp --path=$WP_PATH transient delete --all >> $LOG_FILE 2>&1
# Rewrite kurallarini yenile
wp --path=$WP_PATH rewrite flush >> $LOG_FILE 2>&1
echo "[$DATE] Bakim tamamlandi" >> $LOG_FILE
Bu scripti crontab’a ekleyerek her Pazar gece yarısı otomatik çalıştırabilirsin:
0 2 * * 0 /usr/local/bin/wordpress-maintenance.sh /var/www/html/mysite
WP-CLI ile Uzak Sunucu Yönetimi
WP-CLI, SSH alias özelliği sayesinde uzak sunuculardaki WordPress sitelerini yerel makinenden yönetmene olanak tanır. ~/.wp-cli/config.yml dosyasına şunu ekle:
@production:
ssh: user@sunucu-ip/var/www/html/production
url: https://production-site.com
@staging:
ssh: user@staging-ip/var/www/html/staging
url: https://staging-site.com
Artık uzak sunucudaki siteyi şu şekilde yönetebilirsin:
# Production sitesindeki eklentileri listele
wp @production plugin list
# Staging'e veritabanı kopyala
wp @production db export - | wp @staging db import -
Yaygın Sorunlar ve Çözümleri
PHP bellek limiti sorunu: WP-CLI bazı büyük işlemlerde bellek yetersizliği hatasıyla karşılaşabilir.
# PHP bellek limitini artırarak çalıştır
php -d memory_limit=512M /usr/local/bin/wp plugin update --all
İzin sorunları: WP-CLI’yi root yerine web sunucusu kullanıcısıyla çalıştırman genellikle daha sağlıklıdır:
# www-data kullanıcısı olarak çalıştır (Apache/Nginx için)
sudo -u www-data wp plugin list --path=/var/www/html/site
WordPress’i bulamıyor hatası: WP-CLI, WordPress kurulumunu otomatik algılayamıyorsa --path parametresini açıkça belirt veya wp-cli.yml oluştur.
Renksiz çıktı sorunu: Bazı ortamlarda ANSI renk kodları sorun yaratır:
wp plugin list --no-color
WP-CLI Sürümünü Güncel Tutmak
WP-CLI’nin kendisini güncellemek de oldukça basit:
# Mevcut sürümü kontrol et
wp cli version
# Güncelleme olup olmadığını kontrol et
wp cli check-update
# WP-CLI'yi güncelle
wp cli update
# Belirli bir sürüme güncelle
wp cli update --stable
Sonuç
WP-CLI, WordPress yönetimini ciddi anlamda bir üst seviyeye taşıyan vazgeçilmez bir araçtır. Tek bir site yönetiyor olsan bile komut satırından çalışmanın getirdiği hız ve otomasyon imkanı, öğrenme eğrisinin çok üzerinde bir verimlilik kazancı sağlar. Onlarca site yönetiyorsan, WP-CLI olmadan nasıl idare ettiğini geçmişe bakarak anlayamazsın.
Temel komutları öğrendikten sonra asıl güç, bunları bash scriptleriyle birleştirmekte yatıyor. Haftalık bakım scriptleri, otomatik yedekleme rutinleri, toplu güncelleme işlemleri, site taşıma prosedürleri; tüm bunlar WP-CLI ile hem daha hızlı hem de daha güvenilir hale geliyor.
Bir sonraki adım olarak WooCommerce CLI komutlarını, özel WP-CLI komutları yazmayı ve Composer ile WP-CLI paket yönetimini incelemeni öneririm. Özellikle büyük e-ticaret sitelerinde WooCommerce’i komut satırından yönetmek, hem güvenlik hem de performans açısından admin paneline kıyasla ciddi avantajlar sunuyor.
