So sánh the_excerpt () với the_content ()


8

Có cách nào để so sánh the_excerpt () với the_content () để biết liệu the_excerpt () có thực sự hiển thị toàn bộ nội dung bài đăng không? ví dụ, nếu một bài viết đặc biệt ngắn.

cuối cùng tôi muốn có một liên kết "Đọc thêm" ở cuối đoạn trích. nhưng tôi muốn nói 1 điều cho bài viết và một điều khác cho bài đăng có định dạng video (nghĩa là ... 'xem video' thay vì 'đọc phần còn lại'). nhưng đồng thời tôi không muốn giải quyết thủ công này sau đoạn trích, nhưng tôi có rất nhiều bài viết đủ ngắn để họ không cần liên kết 'đọc thêm', vì the_excerpt hiển thị toàn bộ bài đăng.

nhưng việc thêm permalink vào bộ lọc excerpt_more không hoàn toàn đúng vì nó sẽ không thêm liên kết đến các bài đăng video không có nội dung nào khác.

Vì vậy, tôi bị mắc kẹt giữa hai. Tôi hy vọng rằng ý thức thực hiện. nếu nó không muộn và tôi sẽ cố gắng giải thích lại vào buổi sáng.

Câu trả lời:


7

Những gì bạn đang cố gắng thực hiện với video chính xác là những gì Định dạng bài được tạo để xử lý.

Thêm phần này vào các hàm:

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

Và sau đó điều này để xử lý liên kết Đọc thêm của bạn:

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 là đúng, định dạng bài viết rất hữu ích trong hầu hết các trường hợp.

Là một giải pháp chung hơn, bạn có thể kết hợp the_excerpt()the_content()trong một chức năng:

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

Trong chủ đề của bạn, bạn gọi ngay bây giờ

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

Thay vì the_excerpt();.


Giải pháp thông minh với chiều dài x 1,2. +1
kaiser

đồng ý, +1 để so sánh độ dài, đó là loại mà tôi nghĩ tôi muốn, nhưng định dạng bài đăng thực sự là cách đúng đắn
helgatheviking
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.