truncating imported rss-feeds

时间:2016-11-12 作者:apollodriver

这是一个RSS问题:我从一个站点拉一个RSS提要来显示在我的主页上。它正确地显示标题,但我想截断每篇文章的字符数,这样如果标题很长,它就不会占用很长的部分。我该怎么做?这是我使用的代码

<?php // Get RSS Feed(s)
include_once(ABSPATH . WPINC . \'/feed.php\');

$rss = fetch_feed(\'http://examplesite.com/rss\');
if (!is_wp_error( $rss ) ) :

    $maxitems = $rss->get_item_quantity(5); 

    $rss_items = $rss->get_items(0, $maxitems);
endif;
?>

<ul>
    <?php if ($maxitems == 0) echo \'<li>No items.</li>\';
    else

    foreach ( $rss_items as $item ) : ?>
    <li>
        <a href=\'<?php echo $item->get_permalink(); ?>\'
        title=\'<?php echo \'Posted \'.$item->get_date(\'j F Y | g:i a\'); ?>\'>
        <?php echo $item->get_title(); ?></a>
    </li>
    <?php endforeach; ?>
</ul>
我试图基本上限制摘录中显示的字数,问题是我想在两个不同的循环中使用相同的摘录。第一个循环将显示整个摘录,第二个循环将只显示其中的一小部分。因此,我不能限制所有摘录的字数,但我需要在本地这样做。理想情况下,如果有一个解决方案,我可以在博客的许多不同地方使用相同的摘录,使用相同的摘录,但根据具体情况使用更长/更短的版本。

<?php $little_excerpt = substr(the_excerpt(),0,XY); ?> 
不起作用,因为_excerpt() 不在字符串处。

我们可以使用get_the_excerpt() 相反,这会起到作用。然而,这仍然限制了字符,而不是文字。

我刚刚找到了一个解决方案,可以在没有插件的情况下限制摘录的字数。将以下代码放入模板函数中。php文件:

<?php
function string_limit_words($string, $word_limit)
{
  $words = explode(\' \', $string, ($word_limit + 1));
  if(count($words) > $word_limit)
  array_pop($words);
  return implode(\' \', $words);
}
?>
接下来,将以下代码放在模板中要显示摘录的位置:

<?php
  $excerpt = get_the_excerpt();
  echo string_limit_words($excerpt,25);
?>
其中25是要显示的字数。

1 个回复
最合适的回答,由SO网友:jgraup 整理而成

使用PHPstring functions 喜欢substr 返回字符数而不是字数。

帖子内容aaaaaaaaaaaaaaa aaaaaaaaaaaaa 将比a a.

$max_length = 150;

echo substr( $string, 0, $max_length );
作为一个函数,它可能看起来像:

function string_limit_words( $string = \'\', $count = 25, $after = \'...\' ) {
    if ( strlen( $string ) <= $count ) {
        return $string;
    }

    return substr( $string, 0, $count ) . $after;
}

echo string_limit_words( "This is a lot of words", 10 );

// This is a ...
<小时>the_excerpt() 打印输出,同时get_the_excerpt() 将返回字符串以允许在输出之前进行操作。