Wordpress Snippets

Automatically Add Image Caption, Description And Alt Text From Image Title

I do not use that many images in my posts, but when I do, I do it right.

By that I mean, I make sure the image is cropped and optimized for the web (I use Kraken.io) and I rename the image to mean something rather than it saying IMG_0507.img. While naming stuff, I like to capitalize the first letter of each word. It all looks so good.

Until I upload it to WordPress. And then WordPress does this crap. ‘Neatly Titled Image’ becomes..

Neatly Titled Image - No More

Neatly Titled Image – No More

For years I have ignored this and updated it manually, but today it is time to fix it, once and for all. And in the battle for cleaner (and easier) image attributes, I hope I am not alone.

How WordPress Stores Image Attributes

WordPress stores media attachments in the wp_posts table. Which is good news because, then we can simply use the wp_update_post() function to easily update it’s contents.

Attachment Details Stored In Wp_posts Table

Attachment Details Stored In wp_posts Table

At the same time, Image Alt is saved in wp_posts_meta table with the meta_key: _wp_attachment_image_alt

Image Alt Saved In Wp_posts_meta Table

Image Alt Saved In wp_posts_meta Table

The wp_posts_meta table can be altered using the update_post_meta() function.

Auto Neatified Image Attributes From Title

While inserting an image, I like to copy my neat image title and use it for Image Alt Text, Image Description and in most cases as the Image Caption.

To do all this automatically, we can hook onto to the add_attachment action of WordPress. Here is how its done.

/**
 * Auto Add Image Attributes From Image Filename 
 *
 * @author Arun Basil Lal
 * @refer https://millionclues.com/?p=3908
 * @plugin https://wordpress.org/plugins/auto-image-attributes-from-filename-with-bulk-updater/
 */
function abl_mc_auto_image_attributes( $post_ID ) {
  $attachment = get_post( $post_ID );
  
  $attachment_title = $attachment->post_title;
  $attachment_title = str_replace( '-', ' ', $attachment_title ); // Hyphen Removal
  $attachment_title = ucwords( $attachment_title ); // Capitalize First Word
  
  $uploaded_image = array();
  $uploaded_image['ID'] = $post_ID;
  $uploaded_image['post_title'] = $attachment_title; // Image Title
  $uploaded_image['post_excerpt'] = $attachment_title; // Image Caption
  $uploaded_image['post_content'] = $attachment_title; // Image Description
  
  wp_update_post( $uploaded_image );
  update_post_meta( $post_ID, '_wp_attachment_image_alt', $attachment_title ); // Image Alt Text
}
add_action( 'add_attachment', 'abl_mc_auto_image_attributes' );

Copy the snippet into your functions.php and the next time you upload an image, here is how it will look.

Neatly Titled Image Finally

Neatly Titled Image – Finally

I can’t believe I didn’t do this earlier.

Want To Update Your Existing Images In Media Library As Well?

I have written a WordPress plugin that can bulk update image attributes for your existing images. This plugin can update BOTH your new uploads and existing uploads in the media library.

Find it here: Image Attributes Pro

Image Attributes Pro Millionclues Banner

With Image Attributes Pro you can bulk update WordPress image attributes in one click. You can choose your Alt text, Image title, Caption and description from either image filename or the post title.

There are options to conditionally update image alt text and title only when they aren’t sent yet. See screenshots and find out all that the plugin can do.

Hire Us. Or just say Hi!
Need a job? Apply to get one.