WordPress WP CLI Option İşlemleri
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 gibidir1.
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 konusudur2.
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ı listeleyelim3.
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 wp2static4 eklentisine sahibiz ve cli üzerinden işlemler yürütmek istiyoruz. İhtiyacımız wp2static-options5 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.