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


8

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

最終的には、抜粋の最後に「もっと読む」リンクが欲しいのですが。しかし、私はそれがビデオ形式の投稿と別のもののための1つのことを言いたいです(すなわち...「残りを読む」の代わりに「ビデオを見る」。しかし、同時に、抜粋後に手動でこれを追加したくありませんが、_excerptには完全な投稿が表示されるため、「もっと読む」リンクを必要としない十分に短い投稿がたくさんあります。

しかし、パーマリンクをexcerpt_moreフィルターに追加することは、他のコンテンツを持たないビデオ投稿へのリンクを追加しないため、適切ではありません。

だから私は2つの間に行き詰まっています。私はそれが理にかなっていると思います。遅くならなかったので、朝に説明し直します。

回答:


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()1つの機能:

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
カイザー2012年

同意しました、長さの比較で+1、それは私が欲しかったもののようですが、投稿形式は確かに正しい方法
でした
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.