WordPress WP CLI Option İşlemleri

Güncelleme 20/09/2020 Yayın 18/05/2020

WordPress options WordPress’in yapılandırma sürecinde düzenlenen siteurl, blogname, admin_email, date ve time format, mail server bilgileri başta olmak üzere eklenti ve tema yapılandırma ayarlarının tutulduğu yerdir. wp-config dosyasında yer alan table_prefix değişkeni ile tanımlanan prefix üzerinden (örneğin wp_ standart tanım üzerinden) veritabanımızda wp_options ile bu bilgilere ulaşabiliriz. Bir eklenti veya tema ayarına müdahale ettiğimizde doğrudan buradaki veriler değişecek veya tanımlı değilse ekleme yapılacaktır. İlgili tablo option_id, option_name, option_value ve autoload sütunlarına sahiptir. İşlemler çoğu durumda option_name, option_value üzerinden gerçekleştirilir. Bu yazıda öncelikle WP Cli ile ilgili bilgilere nasıl müdahale edebileceğimize değineceğim. Bir sonraki yazıda da bu yazının devamı olarak Options API‘den bahsetmeyi planlıyorum.

WP Cli: wp option

Eklenti ve WordPress ayarları dahil site seçeneklerini wp option komutuyla yönetebiliriz. En temel kullanımı aşağıdaki gibidir.

wp option <komut>

add, delete, get, list, patch, pluck ve update komutlarını alabilir.

Komut Açıklama
wp option add Yeni bir option değeri (value) eklememizi sağlar.
wp option delete Belirttiğimiz bir option değerini siler.
wp option get Bir option değerini getirir.
wp option list Option tanımlarını ve değerlerini listeler.
wp option patch Bir option tanımına ait iç içe (nested) değeri günceller.
wp option pluck Bir option tanımına ait iç içe bir değer getirir.
wp option update Bir option değerini günceller.

Yukarıdaki komutları yakın zamanda aldığım bir soruya ait çözümleme üzerinden örneklendirmeye çalışacağım. Bu aşamada bir ön bilgilendirme yapmak istiyorum. option_value basit bir string alabileceği gibi bir serileştirilmiş dizi (serialized array) de alabilir ki çoğu durumda eklentiler için bu durum söz konusudur.

a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";a:2:{s:1:"a";i:1;s:1:"b";i:2;}}

Yukarıdaki değerin unserialize() karşılığı şu olacaktır:

Array
(
    [a] => 1
    [b] => 2
    [c] => Array
        (
            [a] => 1
            [b] => 2
        )
)

Şimdi, bu bilgimiz dahilinde örnek işleme geçebiliriz. İlk olarak, wp option list ile tüm option satırlarını listeleyelim.

WP Option List

Bu yığın içerisinde daha spesifik bir arama yapmak isteyebiliriz.

wp option list --allow-root | grep comments_per_page

Bu komutu uygulamamızın ardından comments_per_page 50 dönüşünü alırız. Şimdi bu değeri belirterek elde etmeye çalışalım. Bu arada ile option_name aynı tanımlar.

wp option get comments_per_page --allow-root
# ya da
wp option list --search=comments_per_page --allow-root

Komutu uygulamamızın ardından sadece 50 dönüşünü alırız. Şimdi, bu değeri 100 olarak değiştirelim.

wp option add comments_per_page 100 --allow-root

Yukarıdaki komutu kulandığımızda Error: Could not add option 'comments_per_page'. Does it already exist? dönüşünü almamız oldukça olası. Var olan bir değeri yeniden ekleyemeyiz.

wp option update comments_per_page 100 --allow-root

Bu komut başarıyla uygulandığında Success: Updated 'comments_per_page' option. dönüşünü alırız. get ile değeri istersek kontrol edebiliriz.

wp option patch insert comments_per_page 100 --allow-root

Yukarıdaki komutu kullandığımızda comments_per_page değerine bakılır ve değer aynı ise Success: Value passed for 'comments_per_page' option is unchanged. dönüşünü alırız. Değeri değiştirdiğimizde alacağımız dönüş Success: Updated 'comments_per_page' option. şeklinde olacaktır.

Şimdi, diyelimki wp2static eklentisine sahibiz ve cli üzerinden işlemler yürütmek istiyoruz. İhtiyacımız wp2static-options içeriğine crawl_increment ve deployBatchSize değerlerini eklemek. Eklenti kurulumundan sonra bir işlem yapılmamış ise değer şu şekilde olacaktır.

array (
  'version' => '6.6.7',
  'static_export_settings' => '6.6.7',
  'rewriteWPPaths' => '1',
  'removeConditionalHeadComments' => '1',
  'removeWPMeta' => '1',
  'removeWPLinks' => '1',
  'removeHTMLComments' => '1',
)

Bu değeri farklı bir formatta görmek istersek --format ile var_export (öntanımlı) dışında JSON veya YAML seçimlerini yapabiliriz. Örneğin, get ile değerimizi json formatında alıp bir dosyaya aktaralım.

wp option get wp2static-options --allow-root --format=json > wp2static.json

Aynı şekilde, export edilmiş bir içeriği de kolaylıkla import edebiliriz.

wp option update wp2static-options --allow-root --format=json < wp2static.json

Bir içeriği tamamen aktarmak yerine satır içerisinde belirteceklerimiz üzerinden ekleme yapmak istersek şu şekilde ilerleyebiliriz.

wp option patch insert wp2static-options '{"crawl_increment":"500", "deployBatchSize": "500"}' --format=json --allow-root

Peki, diğer kayıtlara ek yapmak istersek? Öncelikle pluck ile iç içe değeri okuyalım.

wp option pluck wp2static-options crawl_increment --allow-root

Şayet, böyle bir iç değer yok ise herhangi bir değer dönmeyecektir. O halde, ekleme yapalım.

wp option patch insert wp2static-options crawl_increment 500

Şimdi eklediğimiz crawl_increment için yeni bir değer atayalım.

wp option patch update wp2static-options crawl_increment 999999

Son olarak, eklediğimiz wp2static-options değerini iç içe değerler arasından seçip silelim.

wp option patch delete wp2static-options crawl_increment --allow-root

Evet, işlemlerimiz bu kadar. Özellikle cli desteği bulunmayan eklentilerde eklenti ayarlarına option aracılığıyla kolaylıkla müdahale edebilmekteyiz. Ancak, özellikle update ve delete komutlarını kullanırken var olan tablo ya da satır içeriklerini yedeklemeyi unutmamanızı, aksi durumda yapılacak bir yazım hatası veya üzerine yazma işleminde önceki değerleri kaybedebileceğinizi vurgulamak isterim.


İleri Okumalar

Kaynakça

  1. wp option \<command>
  2. WP CLI Commands Cheat Sheet (Complete List of WP CLI Commands)
  3. wp option, wp-kama