“Bắt buộc phải có thumbnail” cho bài viết

Với những website sử dụng WP mà trong đó có nhiều người viết. Nghĩa là hơn 1 người viết bài, đôi khi có người quên / không muốn đưa thumbnail lên bài viết. Ở đây chúng ta có thể gọi là "featured image".

thumb_req

Là một quản trị viên thực sự tôi không muốn thấy website của mình thiết kế dưới dạng magazine hoặc blog có hình ảnh đại diện mà trong đó có một vài bài thiếu mất thumbnail.

Để bắt buộc bài viết phải có thumbnail trước khi Publish tôi xin giới thiệu một snippet giúp chúng ta giải quyết vấn đề.

Chèn vào functions.php

add_action('save_post', 'wpds_check_thumbnail');
add_action('admin_notices', 'wpds_thumbnail_error');
function wpds_check_thumbnail($post_id) {
    // change to any custom post type
    if(get_post_type($post_id) != 'post')
        return;
    if ( !has_post_thumbnail( $post_id ) ) {
        // set a transient to show the users an admin message
        set_transient( "has_post_thumbnail", "no" );
        // unhook this function so it doesn't loop infinitely
        remove_action('save_post', 'wpds_check_thumbnail');
        // update the post set it to draft
        wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
        add_action('save_post', 'wpds_check_thumbnail');
    } else {
        delete_transient( "has_post_thumbnail" );
    }
}
function wpds_thumbnail_error()
{
    // check if the transient is set, and display the error message
    if ( get_transient( "has_post_thumbnail" ) == "no" ) {
        echo "<div id='message' class='error'><p><strong>You must select Featured Image. Your Post is saved but it can not be published.</strong></p></div>";
        delete_transient( "has_post_thumbnail" );
    }
}
Filed under: Codex

1 Comment


Add a Comment

Your email address will not be published. Required fields are marked *

Comment *

Name
Email *
Website