WordPress hacks: compulsory featured image

Many themes nowadays look much better if your posts have a featured image. Using words on their own sometimes just isnt enough – to get your point across images are required. Using the code below, you can force a post to have a featured image set before the post is published.

Step 1. – From your WordPress dashboard open the Appearance menu and select editor, then select your functions.php – add the following code:

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 add a Featured Image before publishing this. Don’t panic, your post is saved.</strong></p></div>”;
delete_transient( “has_post_thumbnail” );
}
}

That’s all there is to it – now every post/page will require a featured image – you may want to provide a generic “no featured image available” image for people to use when they don’t have an image of their own. But have fun with this hack!

Leave a Reply

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