问题描述
有没有办法将 the_excerpt() 与 the_content() 进行比较,以确定是否显示 the_excerpt() 的整个帖子内容?例如,如果一个职位特别短。
最终我想在截图的末尾有一个”Read more” 链接。但是我想让它说 1 个帖子,另一个是视频格式的帖子 (即…「观看视频」,而不是 「阅读其余」) 。但同时我也不想在摘录之后手动打这个,但是我有足够的帖子足够短,不需要’read more’ 链接,因为 the_excerpt 显示完整的帖子。
但是添加固定链接到 excerpt_more 过滤器是不正确的,因为它不会添加到没有其他内容的视频帖子的链接。
所以我被困在两者之间。我希望是有道理的。如果没有’t it’s 晚了,我会尽量在早上去 re-explain 。
最佳解决方案
您正在尝试的视频正是为了处理 Post Formats 而设计的。
将其添加到函数中:
add_theme_support( 'post-formats', array( 'video' ) );
然后这个来处理你的阅读更多链接:
if( !has_post_format( 'video' ) ) {
echo '<a href="' . get_permalink() . '">Read More…</a>';
} else {
echo '<a href="' . get_permalink() . '">Watch the Video…</a>';
}
次佳解决方案
@mrwweb 是对的,post 格式在大多数情况下非常有用。
作为一个更通用的解决方案,您可以将 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(']]>', ']]>', $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();
。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。