Öne Çıkan Görsel ile ilgili fonksiyonlar

Öne Çıkan Görsel ile ilgili fonksiyonlar

WordPress alt yapısında Öne Çıkan Görsel tanımını bilmeyen yoktur sanırım. “Manşet”, “Önizleme” vb gibi isimler takmış olsak da bu görsel bazı sitelerin ve blogların olmazsa olmazları arasındadır. Ben de sitede bu resimleri kullanmaktayım. Biraz daha geliştirmek adına sizlerle üç adet fonksiyon paylaşacağım. Tema ve diğer kodlamalarınızda işinize yarayacağını düşünüyorum.

Öne Çıkan Görsel zorunluluğu getirmek

Bazı sitelerde öne çıkan görsel zorunludur. Haber siteleri, yemek siteleri veya ihtiyaca göre uyarlanmış içerikleri bulunan siteler. İşte bu durumda WordPress kaydetme alanına ilişkin aksiyonlara bu fonksiyonu dahil edebilir ve yazıyı resim seçilmediği sürece Taslak olarak kalmasını sağlayabiliriz. Böylelikle yazarlarınız içeriklerine resim eklemek zorunda kalacaktır.

Temel olarak fonksiyonu temanızın functions.php doyasına eklemeniz yeterli olacaktır. Ayrıca örnek sadece WordPress standart yazı türüne uyarlanmıştır. Eğer farklı bir yazı türü için uyarlamak isterseniz ışıklandırdığım alandaki “post” değerini değiştirebilirsiniz.

add_action('save_post', 'one_cikan_resim_kontrol');
add_action('admin_notices', 'one_cikan_resim_hata');
function one_cikan_resim_kontrol($post_id) {
    // herhangi bir yazı türü ile değiştirebilirsiniz. Bu durumda standart "yazı" türü ile çalışacaktır.
    if(get_post_type($post_id) != 'post')
        return;
    if ( !has_post_thumbnail( $post_id ) ) {
        // geçici bir opsiyon oluşturalım. Sonra kullanacağız
        set_transient( "has_post_thumbnail", "no" );
        // fonksiyonu kaldıralım ki sonsuza değin çalışmasın
        remove_action('save_post', 'wpds_check_thumbnail');
        // yazıyı kaydetme durumunu "taslak" olarak değiştirelim
        wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
        add_action('save_post', 'wpds_check_thumbnail');
    } else {
        delete_transient( "has_post_thumbnail" );
    }
}
function one_cikan_resim_hata()
{
    // geçici opsiyon eklendiyse kontrol yapalım
    if ( get_transient( "has_post_thumbnail" ) == "no" ) {
        echo "<div id='message' class='error'><p><strong>Öne çıkan görsel eklemelisiniz. Yazı kaydedilecektir ancak yayınlanamaz.</strong></p></div>";
        delete_transient( "has_post_thumbnail" );
    }
}

Öne Çıkan Görseli Yazı Silindiğinde Kaldırmak

WordPress sistemine eklenen resimler genellikle yazı silinse de sistemde kalıyor. Aşağıdaki fonksiyon ile birlikte yazıyı silmeye karar verdiğinizde ve kaldırdığınızda sistemden otomatik olarak resmi kaldırmanızı sağlıyor. Böylelikle yer ve veri tabanındaki birkaç satırdan da kurtulmuş oluyorsunuz.

Temel olarak fonksiyonu temanızın functions.php doyasına eklemeniz yeterli olacaktır. Yazı silinmeden önce yazının öne çıkan görselini kontrol edip var ise görseli sildirerek işlem yapılmasını sağlıyor.

add_action( 'before_delete_post', 'yazi_ile_one_cikan_gorseli_sil', 10 );
function yazi_ile_one_cikan_gorseli_sil($post_id)
{
        if(has_post_thumbnail( $post_id ))
        {
          $attachment_id = get_post_thumbnail_id( $post_id );
          wp_delete_attachment($attachment_id, true);
        }
}

Öne Çıkan Görsel içine ekstra class eklemek

Bu aslında en basit kod parçacığı. Günümüz teknoloji gerekliliklerinde tema tasarımcıları mobil odaklı olarak ilerliyorlar ve biz de işi gerektiği şekilde yapmalıyız. Kendi temanızı tasarlarken işinize yarayacak ve öne çıkan görselinizi mobil uyumlu hale getirecek bir class eklemenizi sağlayan kod parçacığını aşağıda bulabilirsiniz. Örnek olarak “img-responsive” class’ını atıyoruz.

Temel olarak bu kodu öne çıkan görseli çağırmak istediğiniz alanda kullanabilirsiniz. Hali hazırda bootstrap kullanıyorsanız direkt olarak bu kodu ekleyebilirsiniz.

if ( has_post_thumbnail() ) {
	//medium temanızdaki herhangi bir resim boytu olabilir. add_image_size ile eklediklerinizi de çağırabilirsiniz.
  the_post_thumbnail('medium', array('class' => 'img-responsive'));
}

Umarım işinize yararlar. Selametle

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir