WordPress — альтернатива символу выдержки?

#wordpress

#wordpress

Вопрос:

Я совершенно новичок в WordPress, так что будьте проще 🙂

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

 <?php excerpt(20);?>
  

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

Спасибо!

Ответ №1:

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

 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. Этот метод ограничен словами, вопрос был в том, есть ли способ сделать это с символами вместо слов.

2. О, я пропустил это! Должно быть, я неправильно прочитал — я думал, вам нужны слова, а не символы. Я полагаю , что часть «array_pop()» — это то, что заставляет слова. Если вы удалите его, он должен выполнять символы. Раньше я использовал этот код, и он работал только для ограничения символов (потому что тогда я не знал об этой функции), и, насколько я помню, это все, что я добавил, чтобы заставить его искать слова. Вы могли бы попробовать раскомментировать эту строку и посмотреть, сработает ли это. прошло некоторое время с тех пор, как Iv’e делал это таким образом, так что вам, возможно, придется немного поиграть с этим.

Ответ №2:

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

Ответ №3:

Я использую это в своем 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 в поле выдержки.

Ответ №4:

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

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

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