Dinamik the_excerpt()
WordPress temalarını yaparken veya sitede yazıların belli bir komutunu göstermek isterken genelde özet bilgi göstermek isteriz. Bunu da “more” etiketini kullanarak ve the_excerpt()
kodu ile düzenleriz. Ama bunun temamız içerisinde bir ayarı yoksa genelde WordPress ne belirlediyse ya da more etiketinin nerde kullanıldığına bağlı olarak görebiliriz. Bu bazen sorun olur. Özellikle tüm yazılara aynı yerde more etiketini uygulamakta sıkıtnı çekeceğimizi düşünürsek.
İşte bu sorunu giderebilmek adına aşağıda sizinle paylaşacağım bir kod var. Tüm Özet bilgilerini aynı karakter sayısına göre düzenleyebileceksiniz.
İşte Kod;
Aşağıdaki kodu temanızın functions.php dosyasının içerisine ekleyeceksiniz. Lütfen bu dosyanın yedeğini almadan işinize başlamayınız. functions.php dosyası /wp-content/themes/temanizin-adi/ yolunda bulunabilir.
// Variable & intelligent excerpt length.
function print_excerpt($length) { // Max excerpt length. Length is set in characters
global $post;
$text = $post->post_excerpt;
if ( '' == $text ) {
$text = get_the_content('');
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
}
$text = strip_shortcodes($text); // optional, recommended
$text = strip_tags($text); // use ' $text = strip_tags($text,'<p><a>'); ' if you want to keep some tags
$text = substr($text,0,$length);
$excerpt = reverse_strrchr($text, '.', 1);
if( $excerpt ) {
echo apply_filters('the_excerpt',$excerpt);
} else {
echo apply_filters('the_excerpt',$text);
}
}
// Returns the portion of haystack which goes until the last occurrence of needle
function reverse_strrchr($haystack, $needle, $trail) {
return strrpos($haystack, $needle) ? substr($haystack, 0, strrpos($haystack, $needle) + $trail) : false;
}
<?php print_excerpt(50);?>
print_exceprt()
fonksiyonu ile karakter sayısını belirleyebilirsiniz. Yukarıdaki kodda “50” karakterde özet yazısını bitirme komutu vermiş olduk. Bunu istersek 250, 300 veya ne kadar uzun istiyorsanız o kadar uzatabilirsiniz.
Kodun orjinali ve orjinal yazı için tıklayınız.
Selametle
excerpt ve content kodlarının birlikte kullanılmasında bir sıkıntı doğması mümkün mü. Kolay gelsin.
Yukarıda paylaştığım kodun içinde bulunan content için bahsediyorsan, fonksiyonu functions.php içine atacağından sadece
print_excerpt(50)
i kullanacağından bir sıkıntı olmaz. ama genel anlamda söylüyorsan single.php gibi yazının içeriğini gösteren bir alanda hem excerpt hem de content komutlarını çağırmak iki kere yazı getirecektir
Verdiğiniz kodu temada uyguladım ancak yazı belirlediğim yerde kesildikten sonra (..) tarzında bişey eklemek istiyorum. Şuan yazı kesildiğinde sonunda bişey yok. Örn: " Hayatıma 1986 yılının son dönemlerinde başladım. Bilgisayar ile tanışmam neredeyse 10 yaşı " gibi.
13. satırdaki $text = substr($text,0,$length); kodunu $text = substr($text,0,$length).'…';
olarak değiştirirsen istediğin olur sanırım.