Home / attachment / Require a featured image before you can publish post
  • How to Require a featured image before you can publish post

    require-featured-image-can-publish-post

    If you would like to require that all posts have a featured image before they can be published add this snippet to the functions.php of your wordpress theme. When you try and publish a post without a featured image you get an admin message “You must select Featured Image. Your Post is saved but it can not be published.” Great way to ensure all your posts have a featured image before they are publish.

    ( click code to copy )

    wordpress snippet : 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" );
        }
    }
    

    ( WordPress codex functions, hooks, in this snippet. )

    init, save_post, get_post, has_post_thumbnail, get_post_type, wp_update_post, add_action, remove_action, _n, _e, wp,
  • Paul

    Great! This is quite useful for me at the moment. Is this adjustable to only work on a certain post-type or category?

  • paaljoachim

    Hey Kevin. I am creating a custom functions plugin where I added this snippet and it seems to work fine until I go to delete a draft/post. I am not able to delete as it just gives me the “You must select a Featured Image. Your Post is saved but it can not be published.” I have to remove the code to be able to delete a post.

  • Sujan Molla

    Thanks