問題描述
有沒有辦法將 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="http://'%20.%20get_permalink()%20.%20'">Read More…</a>';
} else {
echo '<a href="http://'%20.%20get_permalink()%20.%20'">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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。