WP-CLI Term İşlemleri

WP-CLI Post komutuna dair açıklamar ve örneklerin ardından meta yönetimiyle devam ediyorum. Yine temel örnek olarak tüm postlara aynı thumb görseli nasıl atayabileceğimiz sorusunu alarak ilerleyeceğim.

AA

Vakit kaybetmeden term komutunun amacından, işlevinden ve alt komutlarından bahsetmeye geçebiliriz.

WP-CLI Term Komutu

wp term komutu komut satırı WordPress taksonomi birimlerini ve bu birimlere ait metaları yönetmeyi, yeni metalar ve birimler oluşturmayı ve var olanları görüntüleyip silebilmemizi mümkün kılar. Peki, taksonomi ve term ifadeleri tam olarak ne anlama gelmektedir?

Taksonomi (Taxonomy)

WordPress başlangıç dönemlerinde tag (etiket) ve category (kategoriler) tanımlamaları için template tags (template etiketleri) yapısını kullanmaktaydı1. Özel taksonomiler (custom taxonomies) ile birlikte ayrıca yapılar oluşturulması mümkün hale geldi. Böylelikle custom posts (özelleştirilmiş sayfalar / sayfa şablonları) ve post tipleri (post types) için ayrı taksonomiler ve terimler de oluşturulması mümkün hale geldi. Taksonomi bu bağlamda en basit haliyle bir araya gelmiş şeyler şeklinde ifade edilebilir. Yazı etiketleri (post_tag), kategori (category), bağlantı kategorisi (link category) ve post formatları (post formats) ön tanımlı taksonomi yapılarıdır. Az önce de belirttiğim gibi özelleştirilmiş taksonomiler oluşturulabilir. Örneğin, bu sitedeki eğitimler ve projeler birer özelleştirilmiş taksonomidir. WooCommerce ürün kategorileri de yine özelleştirilmiş taksonomilerdendir. Taksonomi ile ilgili daha detaylı bilgi için Codex > Taxonomies sayfasını2 inceleyebilirsiniz.

WP Taxonomy

Term

Bir araya gelmiş, yani taksonomiyi oluşturan şeylerin her biri ise term olara ifade edilir. Kategoriler içeriğindeki her bir kategori bir term‘dir. Her term ayrıca meta‘lara sahiptir ve bu metalar ayrıca yönetilebilir. wp term meta altında detaylıca bu işlemlere değineceğim. O halde, genel hatları ile alt komutlara bir göz atalım.

Alt Komut Açıklama
wp term create Yeni bir term oluşturmamızı sağlar.
wp term delete Var olan / belirtilen bir term’i silmemizi sağlar.
wp term generate Belirtilen sayıda ve yapıda term üretebilmemizi sağlar.
wp term get Belirtilen term’e dair detayları getirir.
wp term list Belirtilen ifadelere karşılık gelen term’leri listeler.
wp term meta Belirtilen term’e ait meta’larla ilgili işlemler yapmamızı sağlar. Alt komutlara sahiptir.
wp term recount Her term için atanan post sayısını yeniden hesaplar.
wp term update Belirtilen term’e dair detayları güncellememizi sağlar.

Temel açıklamaların ardından alt komutların kullanımlarına dair örneklere geçebiliriz. İlk örneğimiz Countries adı ve Discover the World: Adventure Holidays & Tailor Made Trips açıklamasına sahip bir kategori oluşturmak olsun;

wp term create category Countries --description="Discover the World: Adventure Holidays & Tailor Made Trips"

Komutu uyguladığımızda eğer ilgili kategori daha önceden oluşturulmamışsa oluşturulan kategorinin ID değerini de içeren Success: Created category 123. mesajı dönecektir. Aksi durumda belirtilen kategorinin daha önce oluşturulduğu mesajı döner. Yeni kategorinin ID değeri belli olduğuna göre (örnek; 123) bu ID değerine sahip kategorinin detaylarını isteyelim.

wp term get category 123 --format=json --fields=term_id,name,slug,count

Komutun uygulanmasının ardından term_id, name, slug ve içerdiği post sayısı json formatında iletilecektir ve aşağı yukarı şuna benzer.

{"term_id":123,"name":"Countries","slug":"countries","count":0}

Şimdi de ilgili ID’ye sahip kategorinin adını Travel Destinations olarak güncelleyelim ve URL olarak bize iletilmesini isteyelim.

wp term update category 123 --name="Travel Destinations"
wp term list category --include=123 --field=url

Oluşturduğumuz bu kategoriyi silelim.

wp term delete category countries --by=slug

Oluşturulmuş tüm kategorileri term_id‘leriyle listelemek istersek list komutundan faydalanabiliriz3.

wp term list category --field=term_id

Örnek olarak tüm term_id değerlerini aldığımız post_tag parent’ları silelim. Elbette bu işlemi örnek olarak iletiyorum, kodu uyguladığınızda ilgili parent’lar silinecektir, dikkatli olmanızda fayda var.

wp term list post_tag --field=parent | xargs wp term delete post_tag

2 adet kategori üretelim ve term_id‘lerinin dönmesini isteyelim4.

wp term generate category --count=2 --format=ids

Dönen term_id‘lerin 123, 124 olduğunu varsayalım ve delete ile silelim.

wp term delete category 123 124

Yazının başında da belirttiğim gibi wp term meta kendi alt komutlarına sahip bir komut. Yine bir tablo ile özetleyecek olursak;

Alt Komut Açıklama
wp term meta add Bir term’e meta eklememizi sağlar.
wp term meta create Yeni bir term meta oluşturmamızı sağlar.
wp term meta delete Var olan / belirtilen bir term meta’yı silmemizi sağlar.
wp term meta get Belirtilen term meta detaylarını getirir.
wp term meta list Belirtilen term’e ait meta’ları listeler.
wp term meta patch Belirtilen term meta içeriğindeki iç içe yapıların değerleri getirir.
wp term meta pluck Belirtilen term meta içeriğindeki iç içe yapılara ekleme yapmamızı, ilgili değerleri silmemizi ve güncellememizi sağlar.
wp term meta update Belirtilen term meta değerlerini güncellememizi sağlar.

Yukarıdaki yapılar wp post meta ile aynı işlevlere sahipler. İlgili örnek işlemleri benzer şekilde term için de oluşturmak mümkün. Örnek birkaç işleme değinelim. Bir kategori ve etikete görsel atayabilmekteyiz. Görselin yanı sıra All in One SEO gibi bir eklenti kullanıyorsanız ayrıca alanların bu gibi eklentiler tarafından da oluşturulduğunu görmüşsünüzdür. O halde, ilk örneğimiz bu vesileyle bir kategorinin metalarını listelemek olsun.

wp term meta list 123

İlgili term’e 1.png değerine (meta_value) sahip category_icon meta_key‘ini ekleyelim.

wp term meta add 1 category_icon 1.png

Son olarak patch ve pluck kullanımlarına bakalım. 123 term_id meta listesine baktığımızda aioseop_opengraph_settings_category article meta_key değerini görmekteyiz. Bunu website olarak güncellemek istiyorum. pluck tam olarak bu işlemi yapmamı sağlamakta. Öncelikle aioseop_opengraph_settings_category değerini alalım.

wp term meta pluck 123 _aioseop_opengraph_settings aioseop_opengraph_settings_category

Yukarıdaki komutu uyguladığımda article dönüşünü alırım. Şimdi bu alanı patch komutuyla website olarak güncelleyebilirim. Elbette patch ile güncelleme dışında var olan bir key-path‘i silebilir ya da yeni bir key-path atayabilirim5.

wp meta meta patch update 123 _aioseop_opengraph_settings aioseop_opengraph_settings_category website

Evet, wp term komutlar ve bu komutların alt komutlarına dair açıklama ve örnekleri tamamlamış bulunmaktayız. WP-CLI kullanımına dair özellikle öne çıktığını düşündüğüm birkaç işlem daha kaldı. Ardından WP-CLI işlemlerini farklı fikirler bağlamında değerlendireceğiz.