Add Missing Alt tags to Images - WordPress Content Filter

/ Published in: PHP
Save to your folder(s)

Simple function - just place it in your theme's functions.php file, save, and you're good to go. If an image in your content is missing the alt tag, it adds that posts title as the alt tag for the image.

It's been recommended to me that I shouldn't be using regex to parse HTML, and I made an attempt to do this with DOMDocument, but it wasn't working out to well. If there are any DOMDocument ninjas around, maybe they could slice this up a little easier.

Update: removed the "(.*?)" from the '/alt=/' regex, just in case an image had an alt already defined, but using single quotes instead.

Copy this code and paste it in your HTML
  1. function add_alt_tags($content)
  2. {
  3. global $post;
  4. preg_match_all('/<img (.*?)\/>/', $content, $images);
  5. if(!is_null($images))
  6. {
  7. foreach($images[1] as $index => $value)
  8. {
  9. if(!preg_match('/alt=/', $value))
  10. {
  11. $new_img = str_replace('<img', '<img alt="'.get_the_title().'"', $images[0][$index]);
  12. $content = str_replace($images[0][$index], $new_img, $content);
  13. }
  14. }
  15. }
  16. return $content;
  17. }
  18. add_filter('the_content', 'add_alt_tags', 99999);


Report this snippet


RSS Icon Subscribe to comments

You need to login to post a comment.