WordPress Meta Kutuları – Hızlı Bir Kılavuz
Yayınlanan: 2021-01-20WordPress Meta Kutuları, düzenleme ekranınızda gösterilen ve Taksonomi terimleri gibi ek verileri işlemek için kullanılan sürüklenebilir kutulardır. Bu yazıda WordPress meta kutularına bir göz atacağız ve kendi özel kutularımızı nasıl yapabileceğimizi göreceğiz, yaptığımız değişiklikleri nasıl kaydedeceğimizi ve içeriklerini web sitemizin ön ucunda nasıl görüntüleyebileceğimizi öğreneceğiz.
Başlayalım!
Özel Alanlar, Meta kutuları ve Meta Veriler
Bu üç terim arasındaki fark hakkında çok fazla kafa karışıklığı var. Ne olduklarını ve nasıl çalıştıklarını daha iyi anlamak için üçüne de bir göz atalım.
meta veri
Bir gönderinin meta verileri, veritabanı postmeta tablosunda depolanan bir gönderi hakkında ek bilgidir.
Her anahtar/değer çifti bir 'posta alanı' olarak kabul edilir. Bu tablonun sahip olabileceği meta girişlerinin sınırı yoktur.
Özel Alanlar
Teknik olarak özel alanlar olan özellik görüntüsü gibi WordPress tarafından önceden tanımlanmış alanlar vardır. Diğerleri bir eklenti veya özel kodla eklenebilir ve yönetici kullanıcı tarafından tanımlanabilir. 'WordPress Özel Alanlarını Kullanmaya Başlarken' makalemizi okuyarak özel alanlar hakkında daha fazla bilgi edinebilirsiniz.
meta kutuları
Düzenlemek için bir WordPress gönderisini açtığınızda, sayfanın farklı bölümlere ayrıldığını göreceksiniz (bunların çoğu sağ taraftaki kenar çubuğunda bulunur).
Bu bölümlerin tümü teknik olarak 'meta kutuları'dır. Bu nedenle, ana gönderi düzenleyicisi, kategori seçme, gönderiyi yayınlama, etiket ekleme, öne çıkan bir resim ekleme kapları, gönderinin meta verileriyle etkileşime giren HTML öğelerini içeren meta kutulardır. Meta verilerin web sitesi tarafından nasıl işlendiğine bağlı olarak, bu kutular ekranınızın farklı yerlerinde görünecektir.
Daha fazla örnek olarak, Öne Çıkan Resim meta kutusuna bakalım. Bu normalde bir gönderinin yönetici ekranının sağ kenar çubuğunda bulunur. Orada, görüntüyü kolayca değiştirebilirsiniz. Bunu yaptığınızda, aslında o gönderinin meta verilerinin _thumbnail_id
değerini güncellersiniz.
'Kaynak' (Özel Alanlar hakkındaki eğitimimizde eklediğimiz) gibi özel bir alan meta kutusu genellikle ana gönderi düzenleyicinin altında bulunabilir.
Özel Yazı Tipimiz için Meta Kutu Oluşturma
Artık meta kutuların tam olarak ne olduğu konusunda daha net bir fikrimiz var, web sitemiz için kendi özel meta kutumuzu oluşturabilir ve oluşturabiliriz. Bu eğitici, Özel Gönderi Türleri hakkındaki eğiticimizin devamı niteliğindedir… adım adım takip etmek istiyorsanız, o makaleye göz atmanız ve 'yemek tarifleri' adlı özel bir gönderi türü oluşturmanız ve ardından birkaç 'yemek tarifi ayarlamanız gerekir. ' öne çıkan bir görselin seçili olduğu test gönderileri.
Bu eğitimde, bir onay kutusunu işaretleyerek tarifin vegan olup olmadığını belirlemek için kullanılacak yeni bir meta kutu ekleyerek özel gönderi türümüzü genişleteceğiz.
Adım 1 – Meta Kutusunu Kaydedin
Özel gönderi türümüze bir meta kutusu eklemek için WordPress tarafından sağlanan add_meta_box
işlevini kullanırız. Kullanacağımız argümanlarla fonksiyonun yapısı:
add_meta_box( $id, $title, $callback, $screen, $context )
Benzersiz kimlik için is_vegan
ve meta kutusunun başlığı için Is Vegan
dizesini kullanacağız.
Kutu içeriğini göstermek için geri çağırma işlevi display_vegan_meta_box
olacaktır. $screen
niteliği, meta kutusunun görüntüleneceği yönetici ekranını ifade eder. Bizim durumumuzda bu, tarifin yazı düzenleme alanıdır, dolayısıyla daha önce bahsedildiği gibi recipes
olan benzersiz yazı tipi adı olacaktır. $context
parametresi yönetici ekranına göre değişir.
Burada kullanacağımız Mesaj düzenleme ekranı bağlamları, mevcut bağlam değerleri olarak normal, yan ve gelişmiş içerir. Yazı düzenleme sayfasının kenar çubuğundaki meta kutusunu görüntülemek için yan değeri kullanacağız.
Özetle, my-custom-post-type.php
gereken kodu yukarıda tanımlanan parametreleri kullanarak şöyle görünmelidir:
function my_metabox() { add_meta_box( 'is_vegan', 'Is Vegan', 'display_vegan_meta_box', 'recipes', 'side' ); } add_action( 'admin_init', 'my_metabox' );
Göreceğiniz gibi, bir kullanıcı admin alanına eriştiğinde diğer herhangi bir kancadan önce tetiklenen admin_init
kancasını kullandık.
Şimdi, bir tarif gönderisinin düzenleme sayfasını ziyaret ederseniz, kenar çubuğundaki kutuyu görmelisiniz. Tabii ki, içerik şu anda boş.
Bir sonraki adım, kutuyu istenen içerikle doldurmaktır.
Adım 2 – Meta Box Temel İçeriğini Görüntüleyin
Bu kutunun içeriğini basit tutacağız. Tek ihtiyacımız olan bir açıklama ve bir onay kutusu. Belirtildiği gibi, içerik display_vegan_meta_box
işlevinde döndürülür.
Lütfen devam edin ve aşağıdaki kod parçasını my_metabox
işlevinin altına ekleyin:
function display_vegan_meta_box( $recipe ) { ?> <span class="title">Vegan recipe?</span> <span class="content"> <label for="vegan_checkbox"> <input type="checkbox" name="vegan_checkbox" value="yes" /> </label> </span> <?php }
Bu fonksiyonda yaptığımız şey, şimdilik işaretlenmemiş bir HTML onay kutusu çıktısı almaktır. Kaydetme işlevini tanıttıktan sonra, düzenleme sonrası sayfası yüklendiğinde onay kutusunun kaydedilmiş onay kutusu durumunu alması için biraz daha değişiklik yapmak için bu kod bölümüne döneceğiz.
Adım 3 – Meta Box Değerini Veritabanına Kaydedin
Meta kutunun giriş alanları değerini kaydetmek için WordPress'in sağladığı save_post
eylem kancasını kullanırız:
function update_vegan_box( $post_id ) { if( !current_user_can( 'edit_post' ) ) return; if ( 'recipes' == get_post_type() ) { if ( isset( $_POST['vegan_checkbox'] ) && $_POST['vegan_checkbox'] != '' ) { update_post_meta( $post_id, 'is_vegan', $_POST['vegan_checkbox'] ); }else { update_post_meta( $post_id, 'is_vegan', "no" ); } } } add_action( 'save_post', 'update_vegan_box' );
$post_id
argümanıyla update_vegan_bo
x fonksiyonunun içine bazı koşullar ekledik. Öncelikle kullanıcının gönderiyi düzenleme izni olup olmadığını kontrol etmek ve ayrıca bir recipes
gönderi türünü düzenlediğimizden emin olmak istiyoruz.
Yani eğer gönderi recipes
türüne aitse onay kutusunun değerini inceleriz. Varsayılan olarak, onay kutusu işaretlendiğinde, depolanan veritabanı değerinin 'evet' olduğunu ve değilse, değerin NULL olduğunu unutmayın. Bunu biraz değiştirdik, böylece gönderiyi vegan meta kutusu işaretli değilken kaydettiğimizde 'hayır' değeri kaydedilir.
Burada update_post_meta WordPress işlevini kullandık update_post_meta( $post_id, $meta_key, $meta_value, $prev_value = '' )
Argümanlarında, posta kimliğini, meta anahtarını, meta değerini tanımladık. İşlev bir argüman daha kabul edebilir, ancak $prev_value
güncellemeden önce önceki değeri kontrol etmek istiyorsak ve sadece eşitse devam edin ve güncelleyin.
Adım 4 – Meta Kutusu İçerik Kodunu İyileştirin
Şimdi meta kutu içeriğini çıkaran önceki işleve dönelim ve ilgili verileri veritabanından alan birkaç kod satırı daha ekleyelim.
function display_vegan_meta_box( $recipe ) { $is_value = esc_html( get_post_meta( $recipe->ID, 'is_vegan', true ) ); $checked; if ( $is_value == "yes" ) { $checked = "checked"; } else if ( $is_value == "no" ) { $checked = ""; } else { $checked="";} ?> <span class="title">Vegan recipe?</span> <span class="content"><label for="vegan_checkbox"> <input type="checkbox" name="vegan_checkbox" value="yes" <?php echo $checked; ?> /> </label></span> <?php }
Bu nedenle, önce is_vegan
meta değerini alırız ve sonra uygunsa, checked
değer $checked
değişkenine iletilir ve HTML çıktısında yankılanır.
Ve bu kadar. Artık özel gönderimizdeki tarifin vegan olup olmadığını tanımlamak için kullanılabilecek çalışan bir meta kutumuz var.
Çözüm
Meta kutuları, gönderilerde daha yüksek düzeyde kontrol ve esneklik sunar ve çeşitli şekillerde kullanılabilir. Onlar hakkında özellikle güzel olan şey, yazının geri kalan içeriğinden ayrılırken aynı yönetici ekranında bulunmalarıdır, bu da onları yönetmeyi WordPress Admin'de başka bir yerde bulunmalarından çok daha kolay hale getirir.
Çoğu WordPress kodlamasında olduğu gibi, meta kutuları kullanmaya alışmak biraz zaman alabilir. Umarım, yukarıdaki bilgiler başlamanız için yeterlidir. Mutlu kodlama!