Tamamen WordPress ekleri ve özel bir gönderi türü ile desteklenen çok güzel bir galeri oluşturduğumuz bir proje üzerinde çalışırken, WordPress medya yükleyicisine ek alanlar eklememiz gerektiğine karar verdik. Bu ek alanlar her fotoğrafçıya, her bir fotoğraf sayfasına URL’sini ekleyerek kredi vermemizi sağladı. WordPress görüntüleri attachment türünde yazılar olarak depolar; bu nedenle meta veri eklemek, özel alanlar eklemek gibidir. WordPress eklerinin özel bir kullanıcı arayüzü olmadığından, meta verilerini toplamak için medya yükleyicisine özel bir alan eklemeliyiz. Bu yazıda, WordPress Media Uploader’a nasıl ilave alan ekleneceğini göstereceğiz.
Değişikliği yapmak için aşağıdaki filtreleri kullanacağız: attachment_fields_to_edit ve attachment_fields_to_save. Temanızın functions.php dosyasına kod ekleyebilirsiniz.
function be_attachment_field_credit( $form_fields, $post ) {
$form_fields['be-photographer-name'] = array(
'label' => 'Photographer Name',
'input' => 'text',
'value' => get_post_meta( $post->ID, 'be_photographer_name', true ),
'helps' => 'If provided, photo credit will be displayed',
);
$form_fields['be-photographer-url'] = array(
'label' => 'Photographer URL',
'input' => 'text',
'value' => get_post_meta( $post->ID, 'be_photographer_url', true ),
'helps' => 'Add Photographer URL',
);
return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2 );
function be_attachment_field_credit_save( $post, $attachment ) {
if( isset( $attachment['be-photographer-name'] ) )
update_post_meta( $post['ID'], 'be_photographer_name', $attachment['be-photographer-name'] );
if( isset( $attachment['be-photographer-url'] ) )
update_post_meta( $post['ID'], 'be_photographer_url', esc_url( $attachment['be-photographer-url'] ) );
return $post;
}
add_filter( 'attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2 );
Yukarıdaki kod, Medya Yükleyicisine Fotoğrafçı Adı ve Fotoğrafçı URL’si adı verilen iki metin alanı ekleyecektir. Bunu aşağıdaki ekran görüntüsünde görebilirsiniz:
Kodun açıklaması: İlk işlevde, alanın etiketini, giriş türünü, değerini ve yardım metnini belirtmek için yalnızca bir dizi kullanıyoruz. İkinci işlev, bu alanlar için bir değer ayarlanmış olup olmadığını kontrol etmektir. Değer ayarlandıysa, meta veriler sonrası güncellenir.
Alanları ek şablonunuzda görüntülemek istiyorsanız, aşağıdaki kodları döngünün içine yapıştırın:
echo get_post_meta($post->ID, 'be_photographer_url', true);
Öne çıkan görüntünüzün alanlarını arşiv şablonunuzda veya başka bir şablonda görüntülemek istiyorsanız, sadece şunu kullanın:
echo get_post_meta(get_post_thumbnail_id(), 'be_photographer_url', true);
Merhbaa, Peki bunu foreach döngüsü içinde nasıl yazdırabiliriz? Mesela ACF Eklentisiyle acf_gallery ile bir galeri kullanıyoruz ve bu eklediğimiz ekstra alanlara veri girebiliyoruz, Ancak front-end'de bunu yazdırırken her görsele eklediğimiz ekstra alanı döngü içerisinde göstermiyoruz. Yardımcı olabilir misiniz.