WP-CLI: WordPress için Komut Satırı Arayüzü Nedir?

Kurulu bir WordPress siteye müdahale etmenin bir çok yolu bulunmakta. /wp-admin bunlar arasında elbette en bilineni ve en çok kullanılanı.

AA

Panel üzerinden tema ve plugin yapılarının kontrol edilmesi, sürüm yükseltme, plugin ekleme/güncelleme işlemleri pratik bir şekilde (dosya izinlerinin uygun olmasına bağlı olarak) yapılabilmekte. Ancak, kimi durumlarda (örn. WordPress FTP functions.php üzerinden Kullanıcı/Yönetici Oluşturma) wp-config.php, functions.php gibi dosyalar üzerinden işlemler yapmak durumunda kalabilmekteyiz. Bu tür düzenlemelerde FTP erişimi olmazsa olmazımız WP-Admin > Theme Editor altından da functions.php düzenlemesi yapılabilmekte). Peki, diğer alternatifler neler? Bunlardan ilki ve terminal kodlarıyla da ilişkili olarak bahsedeceğim: WP-CLI

WP-CLI: WordPress için Komut Satırı Arayüzü

WP-CLI, WordPress kurulumlarınızı yönetebilmek için geliştirilmiş, farklı amaçlar doğrultusunda komutlar sunan bir komut satırı aracıdır. Örneğin WP-CLI1 üzerinden eklentilerinizi güncelleyebilir, multisite kurulumlarınızı yapabilir, kullanıcılar tanımlayabilir ve içeriklerinizi düzenleyebilirsiniz. Tabi bunlar sadece temel örnekler. Detaylıca incelediğinizde WP-CLI‘nin2 yönetim panelinden çok daha etkili (örneğin wp transient sadece komut satırı üzerinden kullanılabilmekte3) bir yapıya sahip olduğunu göreceksiniz. WP-CLI ile ilgili detayları wp-cli.org ve WP-CLI Commands4 üzerinden görüntüleyebilirsiniz.

WP-CLI Kullanımı

Öncelikle, WP-CLI üzerinden işlemler yürütebilmek için server’ın şu gereksinimleri karşıladığından emin olmalısınız5.

  • Linux/UNIX işletim sistemi (macOS, Linux, FreeBSD, Cygwin vb.)
  • PHP 5.3.29 veya daha üst sürüm
  • WordPress 3.7 veya daha üst sürüm

Not: Windows kısıtlı desteklenmekte. Server gereksinimleri uygun ise wp-cli.phar dosyasını wget veya curl ile indireceğiz. Diğer alternatifler için (Örn. Oh My Zsh) Installing6 sayfasını inceleyebilirsiniz. O halde SSH veya Mosh ile servera bağlanıyor ve aşağıdaki komutları uyguluyoruz.

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Yukarıdaki kod ile wp-cli.phar (PHpARschive) dosyasını sunucumuza indirelim ve aşağıdaki komutla birlikte çalışıp çalışmadığını kontrol edelim.

php wp-cli.phar --info

Yukarıdaki komutu çalıştırdığımızda şuna benzer bir cevap almamız gerekli.

OS:     Darwin 19.6.0 Darwin Kernel Version 19.6.0: Sun Jul  5 00:43:10 PDT 2020; root:xnu-6153.141.1~9/RELEASE_X86_64 x86_64
Shell:  /bin/zsh
PHP binary:     /usr/local/Cellar/php@7.3/7.3.19/bin/php
PHP version:    7.3.19
php.ini used:   /usr/local/etc/php/7.3/php.ini
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:      phar://wp-cli.phar/vendor
WP_CLI phar path:       /Users/username/Desktop
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.4.0

Homebrew üzerinden yapılan kurulumlarda klasör yolu içerisinde Cellar görülmektedir.

chmod +x wp-cli.phar

Ardından wp-cli.phar dosyasını /usr/local/bin/wp dizinine taşıyalım.

sudo mv wp-cli.phar /usr/local/bin/wp

Tüm bu işlemlerin ardından kurulumu test ederek süreci doğrulamamız uygun olacaktır.

wp --info

WP-CLI Güncelleme

WP-CLI kurulum sonrasında güncelleme yapmak için aşağıdaki kodu komut satırından uygulamanız yeterli olacaktır.

wp cli update

Aşağıda ayrıca yukarıdaki komutların uygulama kaydını iletiyorum. Daha detaylı bilgi ve test ortamındaki sürüm güncellemeleri için wp-cli.org sayfasını takip edebilirsiniz.

WP-CLI Üzerinden Plugin İşlemleri

Gelelim birkaç örnek işleme… Pratik bir şekilde WP-CLI üzerinden istediğiniz eklentiyi /plugins klasörü içerisine yükleyebilir ve tek bir komutla aktifleştirebilirsiniz.

WP-CLI: wp plugin

Sırasıyla plugin ekleme, aktifleştirme, pasifleştirme ve silme işlemlerine bakalım7.

WP-CLI: “wp plugin” İle Pluginleri Listeleme
wp plugin list

list ile kurulu olan pluginleri listeleriz. Yeni bir plugin aramak için ise wp plugin search komutunu kullanabiliriz. Örneğin ceaksan kullanıcısı tarafından yazılmış eklentileri listelemek istiyorum.

wp plugin search ceaksan

Bu komut sonrasında alacağım cevap şu şekilde olacaktır.

Success: Showing 1 of 1 plugins.
+-------------------+-------------------+--------+
| name              | slug              | rating |
+-------------------+-------------------+--------+
| wpPostPageManager | wppostpagemanager | 0      |
+-------------------+-------------------+--------+

[–fields=] parametresiyle daha detaylı sorgulama işlemleri yapabiliriz8. Aşağıda sorgulama için kullanabileceğiniz parametre detaylarını iletiyorum.

  • name
  • slug
  • version
  • author
  • author_profile
  • contributors
  • requires
  • tested
  • compatibility
  • rating
  • num_ratings
  • homepage
  • description
  • short_description

Yukarıdaki alt parametrelerden birkaçı kullanarak uygun eklentileri listeleyelim.

wp plugin search dsgnwrks --fields=name,version,slug,rating,num_ratings

Komutun çıktısı şuna benzer olacaktır,

Success: Showing 4 of 4 plugins.
+--------------------------------------+---------+--------------------------------------+--------+-------------+
| name                                 | version | slug                                 | rating | num_ratings |
+--------------------------------------+---------+--------------------------------------+--------+-------------+
| DsgnWrks Instagram Importer          | 1.4.1   | dsgnwrks-instagram-importer          | 84     | 32          |
| DsgnWrks Twitter Importer            | 1.1.3   | dsgnwrks-twitter-importer            | 80     | 1           |
| DsgnWrks Instagram Importer Debug    | 0.1.6   | dsgnwrks-instagram-importer-debug    | 0      | 0           |
| Enhanced Admin Bar with Codex Search | 2.0.7   | enhanced-admin-bar-with-codex-search | 100    | 1           |
+--------------------------------------+---------+--------------------------------------+--------+-------------+
WP-CLI: “wp plugin” İle Plugin Yükleme/Silme

wpPostPageManager pluginini (Plugins altında eklentinin yayınlandığı isme göre) kullanmak istiyoruz. Yapmamız gereken aşağıdaki komutu uygulamak. –activate parametresi yükleme işlemi başarıyla tamamlandığında eklentinin aktifleştirilmesini sağlamaktadır.

wp plugin install [eklenti-adi] --activate

wpPostPageManager ve bbpress üzerinden hem var olan hem de yeni bir plugin yüklenmesine dair akışı aşağıda paylaşıyorum. Silme işleminde ise kullanacağımız komut9;

wp plugin delete [eklenti-adi]

Yaptığınız her işlemden sonra wp plugin list komutuyla eklenti kontrolü yapmanız uygun olacaktır. Uninstall işleminde ise wp plugin uninstall komutunu ve beraberinde –deactivate ve –skip-delete parametrelerini kullanabilmekteyiz. Örneğin hello isimli plugini uninstall etmek ancak sistemden silinmemesini istersek kullanacağımız komut şu şekilde olacaktır.

wp plugin uninstall hello --skip-delete
WP-CLI: “wp plugin” İle Plugin Aktifleştirme/Pasifleştirme
wp plugin activate [eklenti-adi]
wp plugin deactivate [eklenti-adi]

Peki, tüm eklentileri deactivate/active etmek istersek ne yapmalıyız? İşte bu noktada all parametresi bize yardımcı olmakta10 11.

wp plugin activate --all
wp plugin deactivate --all
WP-CLI: “wp plugin” İle Plugin Güncelleştirme/Pasifleştirme

Sıklıkla kullanacağımız komutlardan biri olan update bize tüm eklentileri veya harici seçimleri işleme imkanı sunmakta. Örnek olarak tüm eklentileri güncelleştirmek için şu komutu kullanabiliriz12.

wp plugin update --all

Sürümlere göre farklı istekler göndermemiz de mümkün. bbpress eklentisinin dev kurulumunu sistemimize dahil etmek için uygulamamız gereken komut şu şekilde olacaktır.

wp plugin update bbpress --version=dev

Peki, ya üzerinde işlemler yaptığımız eklentileri güncellemelerden hariç tutmak istersek? Bu durumda exclude parametresini kullanarak eklentileri toplu güncelleme içerisinde hariç tutabiliriz. Aşağıdaki komut sistemdeki tüm pluginlerin sürümlerini karşılaştıracak, yeni sürümler üzerinden güncelleştirmeleri yapacak ancak bu süreçte akismet eklentisini güncelleme dışı tutacaktır.

wp plugin update --all --exclude=akismet

WP-CLI Değerlendirmesi

wp plugin dışında sıklıkla kullanacağınızı tahmin ettiğim komutlar wp cap13, wp cli, wp config, wp cron, wp db, wp media, wp package, wp post, wp post-type, wp search-replace olacaktır. En azıdan ilerleyen süreçte odaklanacağım komutların ağırlıklı olarak bunlar olacağını söyleyebilirim. Diğer tüm komutlar için commands sayfasını inceleyebilirsiniz4.

WP-CLI Kullanıcı İşlemleri

Hazır yeri gelmişken, WordPress FTP (functions.php) Üzerinden Kullanıcı/Yönetici Oluşturma başlıklı yazıda değindiğim kullanıcı işlemini WP-CLI üzerinden yapmaya ne dersiniz? Öncelikle sistemde tanımlı kullanıcıları listeleyelim.

wp user list

Komut sonrasında tanımlı kullanıcılar id, user_login, display_name, user_email, user_registered ve roles detaylarıyla birlikte sunulacaktır. Yeni bir kullanıcıda şu yapıyı kullanmamız gerekiyor.

wp user create [kullanici-adi] [kullanici-email] --role=[yetki]

O halde espresso adında bir admin kullanıcı oluşturalım.

wp user create espresso info@kesfikahve.com --role=administrator

Komutun çalıştırılmasının ardından kullanıcı gerekli veri tabanı alanlarına eklenecek ve kullanıcıya ait şifre üretilerek ekrana yazılacak. Bu bilgilerle birlikte artık üye girişi yapabilirsiniz. Peki, var olan bir kullanıcının şifresini değiştirmek14 istersek ne yapmalıyız? Örneğin, az önce oluşturduğumuz kullanıcının şifresini coffeeholic olarak değiştirelim.

wp user update espresso --display_name=espresso --user_pass=coffeeholic