web-dev-qa-db-ja.com

The_excerpt()とthe_content()を比較してください。

The_excerpt()が実際に投稿コンテンツ全体を表示しているかどうかを知るためにthe_excerpt()とthe_content()を比較する方法はありますか?たとえば、投稿が特に短い場合などです。

最後に、抜粋の最後に「続きを読む」リンクを追加したいと思います。しかし、私はそれがビデオのフォーマットの投稿のための1つの事と別のもののために別のことを言いたい(すなわち... "残りを読む"の代わりに "ビデオを見る")。しかし同時に、抜粋の後にこれを手動で固執したくはありませんが、the_excerptには完全な投稿が表示されるため、「もっと読む」リンクを必要としない十分に短い投稿がたくさんあります。

ただし、excerpt_moreフィルタにパーマリンクを追加しても、他のコンテンツがないビデオ投稿へのリンクが追加されないため、まったく正しくありません。

だから私は両者の間で立ち往生しています。それが理にかなっていることを願っています。それが遅れていないならば、私は午前中に再説明しようとします。

8
helgatheviking

あなたがビデオでやろうとしているのは、まさに ポストフォーマット を処理するために作成されたものです。

これを関数に追加します。

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

@ mrwwebは正しいです、投稿フォーマットはほとんどの場合非常に便利です。

より一般的な解決策として、 one functionで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();の代わりに。

6
fuxia