WordPress’te varsayılan olarak blog yazıları 55 kelime kısaltılmakta. WordPress’in yazı uzunluğu filtreleme fonksiyonu kullanılarak bu varsayılan değeri değiştirebiliyoruz ve bu değiştirdiğimiz de sadece bir yerde kullanabiliyoruz, peki ya birden fazla alanda farklı kelime uzunlukları kullanmak istiyorsak?
Birden fazla yazı türüne sahip bir internet sitesi geliştiriyorsanız, her farklı alan için farklı bir yazı uzunluğu ayarlamanız gerekebilir. WordPress’te bunu nasıl yapabiliriz? bu blog yazımda size bunu eklenti kullanmadan nasıl yapacağınızı anlatacağım.
Aşağıda sizler için özel olarak hazırladığım bir özel yazı kısaltma fonksiyonu mevcut. Bu fonksiyonu kullanmak istediğiniz temanın functions.php dosyasına uygun bir yere eklemeniz yeterli. Artık, dilediğiniz yerde bu fonksiyonu çoğaltarak farklı alanlarda farklı kısaltmalar gerçekleştirebilirsiniz.
function hk_ozel_kisaltma( $args = array() ) {
// Varsayılan
$varsayilan = array(
'post' => '', // belirli bir yazıda uygulanması için post_id parametresi girilmelidir.
'length' => 40, // Yazı karakter uzunluğu
'readmore' => false, // Devamını oku butonu aktif/kapalı durumu.
'readmore_text' => esc_html__( 'Devamını oku', 'hk-ozel-tema' ), // Devamını oku yazısı.
'readmore_after' => '',
'custom_excerpts' => true,
'disable_more' => false,
);
// Filtreyi Uygula
$varsayilan = apply_filters( 'hk_ozel_kisaltma_varsayilan', $varsayilan );
// args yerleştir
$args = wp_parse_args( $args, $varsayilan );
// args'lara filtre ugula
$args = apply_filters( 'hk_ozel_kisaltma_args', $varsayilan );
// Ayıkla
extract( $args );
// genel yazı (post) verisini al
if ( ! $post ) {
global $post;
}
// Yazı ID'si
$post_id = $post->ID;
// Özel kısaltma var mı yok mu kontrol et
if ( $custom_excerpts && has_excerpt( $post_id ) ) {
$output = $post->post_excerpt;
}
// Eğer yok ise bir tane oluştur.
else {
// Devamını oku linki
$readmore_link = '<a href="' . get_permalink( $post_id ) . '" class="readmore">' . $readmore_text . $readmore_after . '</a>';
// Daha fazla etiket olup olmadığını kontrol et ve içeriği döndür.
if ( ! $disable_more && strpos( $post->post_content, '<!--more-->' ) ) {
$output = apply_filters( 'the_content', get_the_content( $readmore_text . $readmore_after ) );
}
// Daha fazla etiket tanımladıysa wp_trim_words kullanarak kısaltın.
else {
// Kısaltmayı oluştur.
$output = wp_trim_words( strip_shortcodes( $post->post_content ), $length );
// Devamını oku özelliği aktif edilmiş ise bunu özel kısaltma fonksiyonuna ekle.
if ( $readmore ) {
$output .= apply_filters( 'hk_ozel_kisaltma_readmore_link', $readmore_link );
}
}
}
// Bütün filtreleri uygula ve ekrana bastır.
return apply_filters( 'hk_ozel_kisaltma', $output );
}
Kodun ilk satırında yer alan varsayılan değerlerde düzenlemeler yaparak kendinize göre fonksiyonu geliştirebilirsiniz.
Geldik yukarıda oluşturduğumuz özel kısaltma fonksiyonunu temamız da nasıl kullanacağımıza. Farklı alanlarda kullanmak üzere artık “the_excerpt()” fonksiyonu yerine hk_ozel_kisaltma ($args) fonksiyonunu kullanabilirsiniz.
Örnek:
<?php echo hk_ozel_kisaltma ( $varsayilan = array(
'length' => 40,
'readmore' => true,
'readmore_text' => esc_html__( 'Devamını oku', 'benim-temam' ),
'custom_excerpts' => true,
) ); ?>
Yukarıda ki fonksiyonu temanız da yazı döngüsünün loopun olduğu yere ekleyerek kendinize özel bir kısaltma işlemi yaptırabilirsiniz. Hazırladığım bu fonksiyon koduna argümanlar eklenebilir hale getirdim böylelikle ileri de ücretli temalarınızı kullanan kullanıcılar diledikleri zaman istedikleri her yerde hk_ozel_kisaltma fonksiyonunu kullanabilir ve kendilerine göre yazılara uzunluk değerini değiştirebilirler.
Yararlanılan Kaynaklar:
Yazı Bağlantısını Kopyala & Paylaş
Bir Cevap Yaz