将_excerpt()与_content()进行比较

时间:2012-05-10 作者:helgatheviking

是否有方法将\\u摘录()与\\u内容()进行比较,以了解\\u摘录()是否实际显示了整个帖子内容?例如,如果一个职位特别短。

最后,我希望在摘录的最后有一个“阅读更多”的链接。但我希望它对帖子说一件事,对视频格式的帖子说另一件事(即“观看视频”而不是“阅读其余内容”)。但同时,我不想在摘录后手动添加此内容,但我有很多帖子足够短,不需要“阅读更多”链接,因为\\u摘录显示了完整的帖子。

但是将permalink添加到extract\\u more过滤器并不完全正确,因为它不会添加到没有其他内容的视频帖子的链接。

所以我被夹在两者之间。我希望这是有意义的。如果没有,那就太晚了,我会在早上重新解释。

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

你想对视频做的就是Post Formats 已创建以处理。

将此添加到函数:

add_theme_support( \'post-formats\', array( \'video\' ) );
然后,这将处理您的“阅读更多”链接:

if( !has_post_format( \'video\' ) ) {
    echo \'<a href="\' . get_permalink() . \'">Read More&hellip;</a>\';
} else {
    echo \'<a href="\' . get_permalink() . \'">Watch the Video&hellip;</a>\';
}

SO网友:fuxia

@mrwweb是对的,post格式在大多数情况下都非常有用。

作为更通用的解决方案,您可以将the_excerpt()the_content() 在里面one 功能:

function wpse_51699_conditional_excerpt( $more_link_text = null, $stripteaser = false )
{
    $excerpt = apply_filters( \'the_excerpt\', get_the_excerpt() );

    $content = get_the_content( $more_link_text, $stripteaser );
    $content = apply_filters(\'the_content\', $content);
    $content = str_replace(\']]>\', \']]&gt;\', $content);

    $stripped_content = strip_tags( $content );
    $content_length   = mb_strlen( $stripped_content, \'utf-8\' );
    $excerpt_length   = mb_strlen( $excerpt, \'utf-8\' );

    // $content is just 20% longer than excerpt. Adjust this to your needs.
    if ( ( $excerpt_length * 1.2 ) >= $content_length )
    {
        print $content;
        return;
    }
    echo $excerpt . $more_link_text;
}
在你的主题中,你现在调用…

wpse_51699_conditional_excerpt( sprintf( \'<a href="%1$s">Read more</a>\', get_permalink() ) );
…而不是the_excerpt();.

结束

相关推荐

如何更改excerpt()方法的长度?

我正在使用\\u extract()方法显示博客帖子中的一些文字。我已经从这个链接读了这篇文章。http://codex.wordpress.org/Plugin_API/Filter_Reference/excerpt_length但我的情况不同。我在两个地方展示了帖子中的一些文字。在第一个位置,我想显示20个单词,在第二个位置,我想显示50个单词。那么我该怎么办呢?