Wordpress - Выдержка символов альтернативы? - PullRequest
0 голосов
/ 03 мая 2011

Я абсолютно новичок в WordPress, так что будьте проще:)

Я следующий код в шаблоне:

<?php excerpt(20);?>

Это ограничивает текст 20 словами.Теперь мне интересно, есть ли какая-то похожая функция, которая ограничивает символы вместо слов?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 03 мая 2011

Я использую это:

add_filter('excerpt_length', 'my_excerpt_length');
function my_excerpt_length($length) {
    return '500';
}

function better_excerpt($limit, $id = '') {
global $post;

if($id == '') $id = $post->ID;
else $id = $id;

$postinfo = get_post($id);
if($postinfo->post_excerpt != '')
  $post_excerpt = $postinfo->post_excerpt;
else 
  $post_excerpt = $postinfo->post_content;

$myexcerpt = explode(' ', $post_excerpt, $limit);
if (count($myexcerpt) >= $limit) {
  array_pop($myexcerpt);
  $myexcerpt = implode(' ',$myexcerpt).'...';
} else {
  $myexcerpt = implode(' ',$myexcerpt);
}   
$myexcerpt = preg_replace('`\[[^\]]*\]`','',$myexcerpt);
$stripimages = preg_replace('/<img[^>]+\>/i', '', $myexcerpt);
return $stripimages;
}

А затем в моем файле темы я просто вызываю его с помощью:

better_excerpt('50') //50 being how many words I want

Полезно также для пользовательских плагинов / виджетов.

1 голос
/ 03 мая 2011

Wordpress не поддерживает разделитель символов для метода выдержки, есть плагин под названием Advanced Excerpt , который поддерживает. После установки вы можете позвонить the_advanced_excerpt('length=20&use_words=0')

1 голос
/ 03 мая 2011

Я использую это в моем functions.php:

function truncate ($str, $length=10, $trailing='...'){
    // take off chars for the trailing
    $length-=mb_strlen($trailing);
    if (mb_strlen($str)> $length){
        // string exceeded length, truncate and add trailing dots
        $str = mb_substr($str,0,$length);
        $str = explode('. ',$str);
        for( $i=0; $i<(sizeof($str)-2); $i++ ):
            $newstr .= $str[$i].". ";
        endfor;
        return $newstr;
    } else{
        // string was already short enough, return the string
        $res = $str;
    }
    return $res;
}

. Оно должно быть усечено до количества символов, но затем усечено обратно до последнего периода перед усечением.Однако это становится проблематичным, когда в ваш отрывок включены ссылки или другая разметка - другими словами, лучше использовать поле «Выдержка» в сообщении, а не автоматическую выдержку с этой функцией, потому что вы не можете использовать HTML в поле отрывка..

0 голосов
/ 03 сентября 2012

Пожалуйста, используйте этот код для ограничения содержимого сообщений ...

<a href="<?php the_permalink(); ?>"><?php substr($post->post_content, 0, xy); ?> ...</a>

Изменить предел XY ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...