2.745 views
Bildiğiniz gibi WordPress ana sayfasında yazıları özet halinde (wordpress excerpt mod) göstermek isterseniz, bir çok html yaftası
<a>, <h>, <strong>, vb
etkisiz hale gelir ve özet yazı sade bir görünüm kazanır.
Eğer siz de benim gibi bu uygulamayı biraz abartılı bulanlardansanız, birazdan aktaracağım çözüm sizin de işinize yarayabilir.
Bu çözümün kodlarını hazırlayan kişi Boutros AbiChedid. İlgili kodları 2011 yılında yazmış ve WordPress 3.1.3 sürümüne kadarki testlerini de yapmış. Aynı kodları ben şu anda WordPress 4.0 üzerinde kullanıyorum. Önceki bir kaç sürümde de hiç bir sorun yaşamamıştım.
Excerpt modundaki sadeleştirmeyi yapan orijinal fonksiyon: get_the_excerpt($text) fonksiyonu. Boutros AbiChedid, bu fonksiyonun istenen fonksiyonla yer değiştirmesini sağlıyor. Fonksiyonun içeriğindekileri yorumlamak için fazla uzman olmaya bile gerek yok.
custom_wp_trim_excerpt($text) fonksiyonun içinde yer alan allowed_tags değişkenine, yazı özetinde hangi html işlemlerinin kullanılabileceğini tanımlıyorsunuz.
Özet yazının uzunluğunu $excerpt_word_count değişkeni aracılığıyla değiştirebilirsiniz. Özetler için varsayılan sözcük sayısı 55 kelimedir.
Yazı özetinin sonuna eklenecek işareti de $excerpt_end değişkeniyle tanımlamanız mümkün.
Tüm kod aşağıda yer alıyor:
/******************************************************************************
* @Author:BoutrosAbiChedid
* @Date: June 20, 2011
* @Websites: http://bacsoftwareconsulting.com/ ; http://blueoliveonline.com/
* @Description: Preserves HTML formating to the automatically generated Excerpt.
* Also Code modifies the default excerpt_length and excerpt_more filters.
* @Tested: Up to WordPress version 3.1.3
*******************************************************************************/
function custom_wp_trim_excerpt($text) {
$raw_excerpt = $text;
if ( '' == $text ) {
//Retrieve the post content.
$text = get_the_content('');
//Delete all shortcode tags from the content.
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$allowed_tags = '<p>,<br>,<a>,<h1>,<strong>,<b>'; /*** MODIFY THIS. Add the allowed HTML tags separated by a comma.***/
$text = strip_tags($text, $allowed_tags);
$excerpt_word_count = 79; /*** MODIFY THIS. change the excerpt word count to any integer you like.***/
$excerpt_length = apply_filters('excerpt_length', $excerpt_word_count);
$excerpt_end = '[...]'; /*** MODIFY THIS. change the excerpt endind to something else.***/
$excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end);
$words = preg_split("/[nrt ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
if ( count($words) > $excerpt_length ) {
array_pop($words);
$text = implode(' ', $words);
$text = $text . $excerpt_more;
} else {
$text = implode(' ', $words);
}
}
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'custom_wp_trim_excerpt');
Yukarıdaki kodun son iki satırında orijinal kod fonksiyon listesinden siliniyor ve onun yerine yeni fonksiyon atanıyor.
Aşağıdaki ilk resimde özet yazının orijinal hali yer alıyor. Tamamiyle sade ve gösterişsiz (biraz da kullanışsız ):

Aşağıdaki resimde ise yukarıdaki kod uygulandıktan sonra aynı özet yazının yeni görünümü yer alıyor. Uygulama sonrasında özet içindeki linkler artık aktif.

İsterseniz yukarıdaki kodu aynen yavru temanızın functions.php dosyasına ekleyebilir, ya da isterseniz izin vereceğiniz özellikleri arzunuza göre değiştirdikten sonra kopyalarsınız. Seçim size kalmış!
Umarım işinize yarar.
Beni izlemeyi unutmayın!
ahmet aksoy