WordPress Snippets at WPcustoms

Require a Featured Post Image

This code sends an admin message if a featured image is not set for the current post. If no image exists it will save the post as draft.


/**
 * Snippet Name: Require a Featured Post Image
 * Snippet URL: https://wpcustoms.net/snippets/require-featured-post-image/
 */
  dd_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 "

You must select Featured Image. Your Post is saved but it can not be published.

"; delete_transient( "has_post_thumbnail" ); } }