要自定义[the_excerpt]长度形式wp

时间:2018-11-05 10:28:12

标签: wordpress wordpress-theming

我正在尝试自定义帖子的摘录长度。我正在function.php上使用此功能:

function get_excerpt(){
    $excerpt = get_the_content();
    $excerpt = preg_replace(" ([.*?])",'',$excerpt);
    $excerpt = strip_shortcodes($excerpt);
    $excerpt = strip_tags($excerpt);
    $excerpt = substr($excerpt, 0, 25);
    $excerpt = substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = trim(preg_replace( '/s+/', ' ', $excerpt));
    $excerpt = $excerpt.'... <a href="'.$permalink.'">[...]</a>';

    return $excerpt;
}

并在此标签上使用

<article class="secundary">
    <div class="mini">
        <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('large', array('class' => 'img-responsive')); ?></a>
    </div>

    <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
    <p>por <span><?php the_author_posts_link(); ?></span> em <span><?php the_category(' '); ?></span> <?php the_tags('Tags: ', ', '); ?></p>
    <p><?php echo get_the_date(); ?></p>
    <p><?php get_excerpt(); ?></p>
</article>

有人可以帮助我吗?它没有用……为什么?

谢谢! :)

2 个答案:

答案 0 :(得分:0)

您不必编写用于更改摘录长度的自定义函数。

您可以使用excerpt_length过滤器。您可以在functions.php文件中使用以下代码。

function mytheme_custom_excerpt_length( $length ) {
   return 25;
}
add_filter( 'excerpt_length', 'mytheme_custom_excerpt_length', 999 );

然后在您的帖子模板中使用默认的the_excerpt()标签。

这将显示25个字符的摘要。有关自定义摘录的更多选项,请查看以下链接。 https://developer.wordpress.org/reference/functions/the_excerpt/

希望这会有所帮助。

答案 1 :(得分:0)

我会避免受到字符限制,因为这会带来性能上的损失。相反,要限制字数。将以下内容放入您的functions.php中:

function excerpt($limit) {
  $excerpt = explode(' ', get_the_excerpt(), $limit);
  if (count($excerpt)>=$limit) {
    array_pop($excerpt);
    $excerpt = implode(" ",$excerpt).'...';
  } else {
    $excerpt = implode(" ",$excerpt);
  } 
  $excerpt = preg_replace('`[[^]]*]`','',$excerpt);
  return $excerpt;
}

无论您在模板文件中使用摘录如何,现在都可以添加要显示的单词数量(例如30个),如下所示:

echo excerpt(30)