WP CLI ile WordPress Kullanıcı Oluşturma ve Yönetimi
WordPress sitenizde kullanıcı yönetimi yaparken phpMyAdmin’e ya da WordPress admin paneline girmek zorunda kalmak bazen gerçekten can sıkıcı olabiliyor. Özellikle onlarca kullanıcıyı toplu olarak oluşturmanız, rol atamanız ya da bir kullanıcının şifresini acilen sıfırlamanız gerektiğinde, WP-CLI’nin wp user komutu tam anlamıyla hayat kurtarıcı oluyor. Bu yazıda wp user komutunun tüm önemli alt komutlarını gerçek dünya senaryolarıyla ele alacağız.
WP User Komutuna Genel Bakış
wp user komutu, WordPress kullanıcı yönetiminin neredeyse tüm ihtiyaçlarını komut satırından karşılayan kapsamlı bir WP-CLI modülüdür. Kullanıcı oluşturmadan silmeye, rol atamaktan meta veri yönetimine kadar her şeyi yapabilirsiniz. Üstelik bunu hem tekil işlemler için hem de toplu operasyonlar için kullanabilirsiniz.
Temel alt komutlar şunlardır:
- wp user create: Yeni kullanıcı oluşturur
- wp user list: Mevcut kullanıcıları listeler
- wp user get: Belirli bir kullanıcının bilgilerini getirir
- wp user update: Kullanıcı bilgilerini günceller
- wp user delete: Kullanıcı siler
- wp user set-role: Kullanıcıya rol atar
- wp user add-role: Kullanıcıya ek rol ekler
- wp user remove-role: Kullanıcıdan rol kaldırır
- wp user add-cap: Kullanıcıya özel yetenek ekler
- wp user remove-cap: Kullanıcıdan yetenek kaldırır
- wp user import-csv: CSV dosyasından toplu kullanıcı içe aktarır
- wp user generate: Test amaçlı sahte kullanıcı oluşturur
- wp user reset-password: Kullanıcı şifresini sıfırlar
- wp user check-password: Şifre doğrulama yapar
- wp user session list: Aktif oturumları listeler
- wp user session destroy: Oturumları sonlandırır
Kullanıcı Oluşturma
En temel kullanıcı oluşturma komutu oldukça sade bir yapıya sahip. Minimum olarak kullanıcı adı, e-posta ve şifre belirtmeniz yeterli.
wp user create john [email protected] --user_pass=GucluSifre123! --role=editor
Bu komut çalıştığında WP-CLI size yeni oluşturulan kullanıcının ID’sini döndürür. --role parametresi belirtmezseniz WordPress varsayılan olarak subscriber rolünü atar.
Daha fazla detay eklemek istediğinizde:
wp user create ahmet.yilmaz [email protected]
--user_pass=Sirket2024!
--role=author
--first_name=Ahmet
--last_name=Yilmaz
--display_name="Ahmet Yilmaz"
--description="Kıdemli içerik yazarı"
--send-email
--send-email parametresi kullanıcıya otomatik olarak hesap bilgilerini içeren bir e-posta gönderir. Toplu kullanıcı oluşturduğunuzda bu parametre olmadan da devam edebilirsiniz, sonradan şifre sıfırlama linki göndermek daha temiz bir yöntem olabilir.
Kullanıcı Oluştururken Dikkat Edilmesi Gerekenler
–porcelain parametresi ile sadece ID döndürmesini sağlayabilirsiniz. Bu özellikle script yazarken çok işe yarar:
USER_ID=$(wp user create yeni.kullanici [email protected] --user_pass=Sifre123! --porcelain)
echo "Oluşturulan kullanıcı ID: $USER_ID"
Bu yöntemi kullanarak oluşturduğunuz ID’yi bir değişkene atayıp sonraki adımlarda meta veri eklemek ya da rol atamak için kullanabilirsiniz.
Kullanıcıları Listeleme ve Sorgulama
wp user list komutu varsayılan olarak tüm kullanıcıları getirir. Büyük sitelerde bu oldukça uzun bir liste olabilir, bu yüzden filtrelemeyi öğrenmek önemli.
# Tüm kullanıcıları listele
wp user list
# Sadece editörleri listele
wp user list --role=editor
# Belirli alanları göster
wp user list --fields=ID,user_login,user_email,roles
# JSON formatında çıktı al
wp user list --format=json
# Belirli bir e-posta domain'ine sahip kullanıcıları bul
wp user list --fields=ID,user_login,user_email | grep "@sirket.com"
Bir kullanıcının detaylı bilgisine bakmak için wp user get kullanırsınız:
# ID ile sorgulama
wp user get 42
# Kullanıcı adı ile sorgulama
wp user get ahmet.yilmaz --field=email
# Tüm alanları JSON olarak al
wp user get ahmet.yilmaz --format=json
Kullanıcı Güncelleme
Mevcut kullanıcıların bilgilerini değiştirmek için wp user update komutunu kullanırsınız. Şifre değiştirme, e-posta güncelleme, display name düzenleme gibi işlemler burada toplanıyor.
# Şifre değiştir
wp user update 42 --user_pass=YeniGucluSifre456!
# E-posta güncelle
wp user update ahmet.yilmaz [email protected]
# Birden fazla alanı aynı anda güncelle
wp user update 42
--display_name="Ahmet Yılmaz - Kıdemli Editör"
--description="10 yıllık deneyimli içerik uzmanı"
Gerçek dünyada sıkça karşılaştığım bir senaryo: Bir çalışan şirketten ayrıldığında e-postasını devre dışı bırakmak yerine başka bir adrese yönlendirmek ya da kullanıcı adını değiştirmek gerekiyor. Bunu admin panelinden yapmak yerine WP-CLI ile bir satırda halledebilirsiniz.
Rol Yönetimi
WordPress’in rol sistemi esnek bir yapıya sahip. wp user set-role ile bir kullanıcının rolünü tamamen değiştirebilir, wp user add-role ile birden fazla rol atayabilirsiniz.
# Kullanıcının rolünü değiştir
wp user set-role 42 editor
# Kullanıcıya ek rol ekle (çoklu rol)
wp user add-role 42 shop_manager
# Kullanıcıdan bir rolü kaldır
wp user remove-role 42 shop_manager
# Tüm rolleri kaldır (kullanıcıyı rolsüz bırak)
wp user set-role 42 ""
Toplu Rol Atama
Diyelim ki sitenizde 50 tane subscriber var ve bunların hepsini customer rolüne geçirmeniz gerekiyor. WooCommerce’e geçiş yaptığınızda bu tür geçişler sık yaşanır:
# Tüm subscriber'ları al ve customer yap
wp user list --role=subscriber --field=ID | xargs -I {} wp user set-role {} customer
Bu tek satır komut ile tüm subscriber’ları döngüye sokar ve her birine customer rolü atar. Yüzlerce kullanıcıda bile birkaç saniye içinde tamamlanır.
Kullanıcı Silme
Kullanıcı silerken dikkat etmeniz gereken en önemli nokta, o kullanıcıya ait içeriklerin ne olacağıdır. --reassign parametresi ile içerikleri başka bir kullanıcıya devredebilirsiniz.
# Kullanıcıyı sil, içerikleri admin'e (ID:1) aktar
wp user delete 42 --reassign=1
# İçerikleri de beraber sil
wp user delete 42 --yes
# Birden fazla kullanıcıyı aynı anda sil
wp user delete 42 43 44 --reassign=1
--yes parametresi olmadan silme işlemi onay ister. Script içinde kullanıyorsanız --yes eklemeyi unutmayın.
Senaryo: Test Kullanıcılarını Temizleme
Geliştirme ortamından production’a geçerken test için oluşturulmuş kullanıcıları temizlemek gerekebilir. Bunları e-posta domain’ine göre filtreleyip silebilirsiniz:
# test.com domain'li kullanıcıları bul ve sil
wp user list --field=ID --user_email="*@test.com" | xargs wp user delete --yes --reassign=1
Şifre Yönetimi
wp user reset-password komutu kullanıcıya şifre sıfırlama e-postası gönderir. Ama bazen direkt şifre belirlemek daha pratik olur:
# Şifre sıfırlama e-postası gönder
wp user reset-password ahmet.yilmaz
# Birden fazla kullanıcıya aynı anda gönder
wp user reset-password 42 43 44
# Şifreyi direkt değiştir (e-posta göndermeden)
wp user update 42 --user_pass=$(openssl rand -base64 16)
Şifre doğrulama için wp user check-password kullanabilirsiniz. Bu özellikle özel login sistemleri geliştirirken veya debug yaparken işe yarar:
wp user check-password ahmet.yilmaz "Kontrol123!" && echo "Şifre doğru" || echo "Şifre yanlış"
Meta Veri Yönetimi
Kullanıcı meta verileri WordPress’te çok önemli bir yer tutuyor. WooCommerce müşteri adresleri, özel profil alanları, plugin ayarları hepsi user meta olarak saklanıyor.
# Meta veri ekle
wp user meta add 42 _billing_phone "05321234567"
# Meta veri güncelle
wp user meta update 42 _billing_city "Istanbul"
# Meta veri oku
wp user meta get 42 _billing_city
# Tüm meta verileri listele
wp user meta list 42
# Meta veri sil
wp user meta delete 42 gecici_not
WooCommerce Müşteri Adresi Güncelleme
E-ticaret projelerinde müşteri adreslerini toplu güncellemek gerektiğinde bu komutlar çok işe yarar:
#!/bin/bash
# Tek bir müşterinin WooCommerce fatura adresini güncelle
CUSTOMER_ID=42
wp user meta update $CUSTOMER_ID _billing_first_name "Mehmet"
wp user meta update $CUSTOMER_ID _billing_last_name "Demir"
wp user meta update $CUSTOMER_ID _billing_address_1 "Atatürk Cad. No:15"
wp user meta update $CUSTOMER_ID _billing_city "Ankara"
wp user meta update $CUSTOMER_ID _billing_postcode "06000"
wp user meta update $CUSTOMER_ID _billing_country "TR"
wp user meta update $CUSTOMER_ID _billing_phone "05359876543"
echo "Müşteri $CUSTOMER_ID adresi güncellendi."
CSV’den Toplu Kullanıcı İçe Aktarma
wp user import-csv komutu büyük projelerde gerçekten hayat kurtarıyor. Yüzlerce hatta binlerce kullanıcıyı tek seferde içe aktarabilirsiniz.
CSV dosyanızın formatı şöyle olmalı:
user_login,user_email,user_pass,role,first_name,last_name
ali.celik,[email protected],Sifre123!,subscriber,Ali,Celik
ayse.kaya,[email protected],Sifre456!,editor,Ayse,Kaya
hasan.oz,[email protected],Sifre789!,author,Hasan,Oz
İçe aktarma komutu:
# Temel içe aktarma
wp user import-csv kullanicilar.csv
# Mevcut kullanıcıları güncelle (yoksa oluştur)
wp user import-csv kullanicilar.csv --update
# Oluşturma e-postası gönder
wp user import-csv kullanicilar.csv --send-email
# Sonuçları göster
wp user import-csv kullanicilar.csv --skip-update
--update parametresi özellikle dikkat gerektiriyor. Bu parametre ile aynı e-postaya sahip mevcut kullanıcıların bilgileri CSV’deki verilerle güncellenir. Yanlışlıkla yüzlerce kullanıcının şifresini sıfırlamak istemiyorsanız CSV’nizde user_pass kolonunu boş bırakın.
Oturum Yönetimi
WordPress 4.0’dan itibaren kullanıcı oturumları veritabanında saklanıyor. WP-CLI ile bu oturumları yönetebilirsiniz.
# Bir kullanıcının aktif oturumlarını listele
wp user session list 42
# Belirli bir kullanıcının tüm oturumlarını sonlandır
wp user session destroy 42 --all
# Belirli bir token'ı sonlandır
wp user session destroy 42 TOKEN_DEGERI
Güvenlik açısından kritik bir senaryo: Şüpheli aktivite tespit ettiğinizde ya da bir kullanıcının şifresini değiştirdiğinizde mevcut tüm oturumlarını sonlandırmak isteyebilirsiniz:
# Şifreyi değiştir ve oturumları sonlandır
wp user update 42 --user_pass=YeniGuvenliSifre!
wp user session destroy 42 --all
echo "Kullanıcı 42'nin şifresi değiştirildi ve tüm oturumlar sonlandırıldı."
Test Kullanıcıları Oluşturma
Geliştirme ortamında performans testleri yaparken ya da farklı rollerdeki kullanıcıların deneyimini test ederken wp user generate çok işe yarıyor:
# 10 adet rastgele kullanıcı oluştur
wp user generate --count=10
# Belirli rolle 20 kullanıcı oluştur
wp user generate --count=20 --role=subscriber
# Belirli bir format ile oluştur
wp user generate --count=5 --role=customer --format=ids
Bu komutla oluşturulan kullanıcılar sahte ama geçerli verilerle doluyor. Test sonrası temizlemek için:
# Oluşturulan test kullanıcılarının ID'lerini al ve sil
wp user generate --count=10 --role=subscriber --format=ids | xargs wp user delete --yes --reassign=1
Gerçek Dünya Senaryoları
Senaryo 1: Siteyi Yeni Bir Ajansa Devrederken Admin Hesabı Oluşturma
Bir projeyi yeni bir ajansa devrediyorsunuz. Eski admin hesabını silmeden önce yeni bir admin oluşturmanız gerekiyor:
#!/bin/bash
# Yeni ajans admin hesabı oluştur
NEW_ADMIN_ID=$(wp user create ajans.admin [email protected]
--user_pass=$(openssl rand -base64 20)
--role=administrator
--first_name="Ajans"
--last_name="Admin"
--porcelain)
echo "Yeni admin oluşturuldu, ID: $NEW_ADMIN_ID"
# Şifre sıfırlama e-postası gönder
wp user reset-password $NEW_ADMIN_ID
echo "Şifre sıfırlama e-postası gönderildi."
Senaryo 2: Güvenlik Taraması Sonrası Şüpheli Adminleri Tespit Etme
# Tüm administrator hesaplarını listele ve incele
echo "=== Mevcut Administrator Hesapları ==="
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
# Son 30 günde oluşturulmuş admin hesaplarını bul
wp user list --role=administrator --fields=ID,user_login,user_registered --format=csv |
awk -F',' 'NR>1 {print $0}'
Senaryo 3: Multisite’da Kullanıcı Yönetimi
WordPress Multisite kullanıyorsanız --url parametresi ile hangi siteyi hedef aldığınızı belirtmeniz gerekiyor:
# Alt site 2'deki kullanıcıları listele
wp user list --url=site2.example.com
# Kullanıcıyı alt siteye ekle
wp user set-role 42 editor --url=site2.example.com
# Süper admin yap
wp super-admin add ahmet.yilmaz
Senaryo 4: Pasif Kullanıcıları Tespit Etme ve Temizleme
#!/bin/bash
# 1 yıldan uzun süredir giriş yapmayan subscriber'ları bul
# Not: Bu örnek son giriş tarihini meta olarak saklayan bir yapı varsayıyor
INACTIVE_USERS=$(wp user list
--role=subscriber
--fields=ID,user_login,user_email
--format=csv)
echo "$INACTIVE_USERS"
echo "---"
echo "Toplam subscriber sayısı: $(wp user list --role=subscriber --count)"
Özel Yetenekler (Capabilities) Yönetimi
Rollerin yanı sıra bireysel yetenekler de atayabilirsiniz. Bu özellikle ince ayar gerektiren permission yapılarında işe yarar:
# Kullanıcıya özel yetenek ekle
wp user add-cap 42 edit_others_posts
# Kullanıcının yeteneklerini listele
wp user list-caps 42
# Yeteneği kaldır
wp user remove-cap 42 edit_others_posts
# Bir kullanıcıya birden fazla özel yetenek ekle
wp user add-cap 42 edit_pages
wp user add-cap 42 publish_pages
wp user add-cap 42 manage_categories
Performans İpuçları
Büyük sitelerde wp user list komutu yavaş çalışabilir. Birkaç optimizasyon ipucu:
- –no-color parametresi ile renk kodlarını devre dışı bırakın, özellikle pipe işlemlerinde fark yaratır
- –fields ile sadece ihtiyacınız olan kolonları çekin, tüm alanları getirmek gereksiz yük oluşturur
- –format=ids sadece ID listesi için çok daha hızlı çalışır
- Toplu silme ya da güncelleme işlemlerinde
xargs -P 4ile paralel işlem yapabilirsiniz, ama dikkatli olun çünkü veritabanı üzerinde eş zamanlı yük oluşturur
# Sadece ID'leri hızlıca getir
wp user list --format=ids
# Belirli alanlarla hızlı listeleme
wp user list --fields=ID,user_login --format=csv
Sonuç
wp user komutu, WordPress kullanıcı yönetimini tamamen farklı bir boyuta taşıyor. Admin panelinde tek tek yapacağınız işlemleri saniyeler içinde, hatta toplu olarak halledebiliyorsunuz. Özellikle şu durumlarda WP-CLI vazgeçilmez oluyor:
- Yeni müşteri onboarding süreçlerinde toplu hesap oluşturma
- Güvenlik olaylarında hızlı müdahale gerektiren şifre sıfırlama ve oturum sonlandırma
- Ajans değişikliklerinde admin hesapları devri
- Site migrasyonlarında kullanıcı verisi aktarımı
- Geliştirme ortamlarında test kullanıcıları oluşturma ve temizleme
- WooCommerce projelerinde müşteri verisi güncelleme
Komutları önce staging ortamında deneyin, özellikle toplu silme ve güncelleme işlemlerinden önce mutlaka veritabanı yedeği alın. --dry-run desteği olmayan komutlar için önce wp user list ile etkilenecek kullanıcıları gözden geçirmek iyi bir alışkanlık. Bir kez akıcı kullanmaya başladığınızda WordPress kullanıcı yönetimi için artık admin paneline girme ihtiyacı duymayacaksınız.
