I would like to add the media description as a data-attribute to each image of the gallery. All the other answers favour the solution to copy the whole code from media.php to functions.php and change it there. But isn't there a more intelligent way?

It's way to much code duplication in order to change one single line of code!


1 Answer 1


If anybody is interested: I managed it to add a data attribute to the article thumbnail with following filter:

function post_thumbnail_add_data_attribute( $input, $post_image_id ) {
  $caption = wptexturize(get_post(get_post_thumbnail_id())->post_excerpt);
  $substitute = is_home() ? "<img" : "<img data-description=\"" . $caption . "\"";

  return str_replace("<img", $substitute, $input);

add_filter('post_thumbnail_html', 'post_thumbnail_add_data_attribute', 10, 3 );

For the gallery I followed the advice to remove the gallery shortcode...


and then to add a customized gallery function to the functions.php...

add_shortcode('gallery', 'my_gallery');

which contains the tiny customization...

// Add the caption of images in a gallery as the name attribute in order to fetch it with jQuery lightbox
$output = str_replace('<img', '<img data-description="' . wptexturize($attachment->post_excerpt) . '"', $output);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.