WordPress Excerpt Fonksiyonu
Daha önce de konu hakkında yazmıştım. Wordpress'in kendi içersinde Excerpt uzunluğunu ayarlama seçeneği yok. Bunu manuel olarak yapmak durumunda kalıyoruz.
Nasıl olacağı hakkında şuraya bakılabilir. Ama aşağıda vereceğim kod ile WordPress‘de istediğiniz uzunlukta gösterebilirsiniz yazıları. Özellikle anasayfa ve arşiv sayfalarında daha düzgün bir görüntü elde etmek için oldukça işe yarıyor.
Bu kodu temanızının functions.php dosyasına eklemeniz yeterli. Daha sonra Excerpt fonksiyonunu şu şekilde kullanabilirsiniz:
//THE_EXCERPT RELOADED
// the_excerpt_reloaded(excerpt_length, 'allowedtags', 'filter_type', use_more_link, 'more_link_text', force_more_link, fakeit, fix_tags);
function wp_the_excerpt_reloaded($args='') {
parse_str($args);
if(!isset($excerpt_length)) $excerpt_length = 120; // length of excerpt in words. -1 to display all excerpt/content
if(!isset($allowedtags)) $allowedtags = '<a>'; // HTML tags allowed in excerpt, 'all' to allow all tags.
if(!isset($filter_type)) $filter_type = 'none'; // format filter used => 'content', 'excerpt', 'content_rss', 'excerpt_rss', 'none'
if(!isset($use_more_link)) $use_more_link = 1; // display
if(!isset($more_link_text)) $more_link_text = "(more...)";
if(!isset($force_more)) $force_more = 1;
if(!isset($fakeit)) $fakeit = 1;
if(!isset($fix_tags)) $fix_tags = 1;
if(!isset($no_more)) $no_more = 0;
if(!isset($more_tag)) $more_tag = 'div';
if(!isset($more_link_title)) $more_link_title = 'Continue reading this entry';
if(!isset($showdots)) $showdots = 1;
return the_excerpt_reloaded($excerpt_length, $allowedtags, $filter_type, $use_more_link, $more_link_text, $force_more, $fakeit, $fix_tags, $no_more, $more_tag, $more_link_title, $showdots);
}
function the_excerpt_reloaded($excerpt_length=120, $allowedtags='<a>', $filter_type='none', $use_more_link=true, $more_link_text="(more...)", $force_more=true, $fakeit=1, $fix_tags=true, $no_more=false, $more_tag='div', $more_link_title='Continue reading this entry', $showdots=true) {
if(preg_match('%^content($|_rss)|^excerpt($|_rss)%', $filter_type)) {
$filter_type = 'the_' . $filter_type;
}
echo get_the_excerpt_reloaded($excerpt_length, $allowedtags, $filter_type, $use_more_link, $more_link_text, $force_more, $fakeit, $fix_tags, $no_more, $more_tag, $more_link_title, $showdots);
}
function get_the_excerpt_reloaded($excerpt_length, $allowedtags, $filter_type, $use_more_link, $more_link_text, $force_more, $fakeit, $no_more, $more_tag, $more_link_title, $showdots) {
global $post;
if (!empty($post->post_password)) { // if there's a password
if ($_COOKIE['wp-postpass_'.COOKIEHASH] != $post->post_password) { // and it doesn't match cookie
if(is_feed()) { // if this runs in a feed
$output = __('There is no excerpt because this is a protected post.');
} else {
$output = get_the_password_form();
}
}
return $output;
}
if($fakeit == 2) { // force content as excerpt
$text = $post->post_content;
} elseif($fakeit == 1) { // content as excerpt, if no excerpt
$text = (empty($post->post_excerpt)) ? $post->post_content : $post->post_excerpt;
} else { // excerpt no matter what
$text = $post->post_excerpt;
}
// get rid of the s
$text = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $text );
if($excerpt_length < 0) {
$output = $text;
} else {
if(!$no_more && strpos($text, '<!--more-->')) {
$text = explode('<!--more-->', $text, 2);
$l = count($text[0]);
$more_link = 1;
} else {
$text = explode(' ', $text);
if(count($text) > $excerpt_length) {
$l = $excerpt_length;
$ellipsis = 1;
} else {
$l = count($text);
$more_link_text = '';
$ellipsis = 0;
}
}
for ($i=0; $i<$l; $i++)
$output .= $text[$i] . ' ';
}
if('all' != $allowed_tags) {
$output = strip_tags($output, $allowedtags);
}
// $output = str_replace(array("\r\n", "\r", "\n", " "), " ", $output);
$output = rtrim($output, "\s\n\t\r\0\x0B");
$output = ($fix_tags) ? $output : balanceTags($output);
$output .= ($showdots && $ellipsis) ? '...' : '';
$output = apply_filters($filter_type, $output);
switch($more_tag) {
case('div') :
$tag = 'div';
break;
case('span') :
$tag = 'span';
break;
case('p') :
$tag = 'p';
break;
default :
$tag = 'span';
}
if ($use_more_link && $more_link_text) {
if($force_more) {
$output .= ' <' . $tag . '><a href="'. get_permalink($post->ID) . '#more-' . $post->ID .'" title="' . $more_link_title . '">' . $more_link_text . '</a></' . $tag . '>' . "\n";
} else {
$output .= ' <' . $tag . '><a href="'. get_permalink($post->ID) . '" title="' . $more_link_title . '">' . $more_link_text . '</a></' . $tag . '>' . "\n";
}
}
return $output;
}
Aşağıdaki kodu temamızın herhangi bir yerinde kullanabiliriz:
<?php the_excerpt_reloaded(45, '<a>,<strong>', 'excerpt', TRUE, 'Devamı', FALSE); ?>
Kodun içindeki 45 sayısı kelime uzunluğunu, a veya strong etiketleri excerpt içersinde gösterilecek kodları (burada img, p vs..gibi diğer kodlara da izin verebilirsiniz), yazının devamı gibi ayarları tek bir satırda yapabiliyoruz. Bu kodun kullanımı hakkında daha ayrıntılı bilgiyi, kodu yazan arkadaşın sitesinde bulabilirsiniz.
-
[...] the rest here: WordPress Excerpt Fonksiyonu | Fadonet.NET Share and [...]

Çok teşekkür ediyorum işimi fazlasıyla gördü.. ;)
yapamıyorum :(
neden olmuyorrrrr
Bir şeyleri yanlış yapıyorsundur. Aynı kodları kullanıyorum ben şu an blogda…
çok teşekkür ederim
ben de tam bunu arıyordum
ama sayfayı tesadüfen buldum:)
Hocam çok teşekkürler, çok işime yaradı.