Bandingkan the_excerpt () dengan the_content ()

8

Apakah ada cara untuk membandingkan the_excerpt () dengan the_content () untuk mengetahui apakah the_excerpt () benar-benar menunjukkan seluruh konten posting? misalnya, jika sebuah posting sangat pendek.

akhirnya saya ingin memiliki tautan "Baca lebih lanjut" di akhir kutipan. tetapi saya ingin mengatakan 1 hal untuk posting dan lain untuk posting dari format video (yaitu ... 'tonton video' bukan 'baca sisanya'). tetapi pada saat yang sama saya tidak ingin secara manual menangani ini setelah kutipan, tetapi saya punya banyak posting yang cukup pendek mereka tidak memerlukan tautan 'baca lebih lanjut', karena the_excerpt menampilkan posting lengkap.

tetapi menambahkan permalink ke filter excerpt_more tidak tepat karena tidak akan menambahkan tautan ke posting video yang tidak memiliki konten lain.

jadi saya terjebak di antara keduanya. saya harap itu masuk akal. jika tidak terlambat dan saya akan mencoba menjelaskan kembali di pagi hari.

helgatheviking
sumber

Jawaban:

7

Apa yang Anda coba lakukan dengan video itu adalah persis apa yang dibuat untuk menangani Format Posting .

Tambahkan ini ke fungsi:

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

Dan kemudian ini untuk menangani tautan Read More Anda:

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

@ mrwweb benar, format posting sangat berguna dalam banyak kasus.

Sebagai solusi yang lebih umum Anda dapat menggabungkan the_excerpt()dan the_content()dalam satu fungsi:

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

Dalam tema Anda, Anda menelepon sekarang ...

wpse_51699_conditional_excerpt( sprintf( '<a href="%1$s">Read more</a>', get_permalink() ) );

... bukannya the_excerpt();.

fuxia
sumber
Solusi cerdas dengan panjang x 1.2. +1
kaiser
setuju, +1 untuk perbandingan panjang, itulah yang saya pikir saya inginkan, tetapi format pos memang cara yang tepat untuk pergi
helgatheviking