比较the_excerpt()和the_content()


8

有没有一种方法可以将the_excerpt()与the_content()进行比较,以了解the_excerpt()是否实际上显示了整个帖子内容?例如,如果某个职位特别短。

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

但是将永久链接添加到excerpt_more过滤器中并不是很正确,因为它不会为没有其他内容的视频帖子添加链接。

所以我被困在两者之间。我希望这是有道理的。如果不是,那是很晚了,我会在早上尝试重新解释。

Answers:


7

您要对视频执行的操作正是创建要处理的邮政格式

将此添加到函数:

add_theme_support( 'post-formats', array( 'video' ) );

然后用它来处理您的Read More链接:

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>';
}

6

@mrwweb是正确的,在大多数情况下,帖子格式非常有用。

作为一个更通用的解决方案,你可以结合起来the_excerpt(),并the_content()一个功能:

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();


长度x 1.2的智能解决方案。+1
凯撒(Kaiser)2012年

同意,长度比较+1,这是我想我想要的,但是帖子格式确实是正确的方法
helgatheviking 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.