1

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!

5
  • 1
    Have you seen this? Commented Mar 27, 2013 at 8:12
  • Or How to customize the output of the gallery shortcode Commented Mar 27, 2013 at 8:56
  • Thank you. Yes, I did. It favours the solution, to duplicate the content in functions.php. Commented Mar 27, 2013 at 9:16
  • I see no hook or set of hooks that will do what you want. I agree it would be nice, and it would be a trivial patch if you wanted to submit such a thing. Maybe it will be included in an upcoming release. Commented Mar 27, 2013 at 13:57
  • Thank you guys for your hints. This was exactly what I needed!! Commented Mar 27, 2013 at 22:42

1 Answer 1

0

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...

remove_shortcode('gallery');

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.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.