WordPress propose dans ses outils de mise en page une manière d’afficher vos légendes directement sous votre image. Une bonne solution pour afficher un court descriptif de votre photographie.
Dans le cadre d’un document en HTML5 (doctype par défaut de WordPress depuis quelques versions maintenant) il peut être intéressant d’utiliser autre chose que des simples div pour baliser le contenu.

Justement, HTML5 prévoit ce type de cas avec les éléments figure et figcaption. Je vous renvoie à ce propos sur le très bon article sur figure et figcaption de Okko sur Alsacréations.

Nous allons donc simplement remplacer les div par des éléments dont la sémantique est plus adéquate. Pour cela nous allons utiliser le hook img_caption_shortcode qui permet d’agir sur un shortcode enregistré par défaut dans WordPress.

add_filter('img_caption_shortcode', 'juiz_img_caption_shortcode_html5_compliant',10,3);

/**
 * Filtre sur le shortcode  pour un code "HTML5 Compliant"
 * @return text HTML décrivant un contenu de type image
 **/
if ( !function_exists('juiz_img_caption_shortcode_html5_compliant')) {
	function juiz_img_caption_shortcode_html5_compliant($val, $attr, $content = null)
	{
		extract(shortcode_atts(array(
			'id'	=> '',
			'align'	=> '',
			'width'	=> '',
			'caption' => ''
		), $attr));

		if ( empty ($caption) || 1 > (int)$width )
			return $val;

		$capid = '';
		if ( $id ) {
			$id = esc_attr($id);
			$capid = 'id="figcaption_'. $id . '" ';
			$id = 'id="' . $id . '" aria-labelledby="figcaption_' . $id . '" ';
		}

		return '<figure ' . $id . 'class="wp-caption ' . esc_attr($align) . '" style="width: '
		. (10 + (int) $width) . 'px">' . do_shortcode( $content ) . '<figcaption ' . $capid 
		. 'class="wp-caption-text">' . $caption . '</figcaption></figure>';
	}
} //endif !function_exists

Nous avons globalement réécrit le shortcode proposé par WordPress.

Ce shortcode, inséré automatiquement par WordPress lorsque vous ajoutez une légende à une photo, vous retournera désormais le code HTML5 suivant, avec un bout d’ARIA pour y gouter :

<figure id="attachment-23" aria-labelledby="figcaption_attachment-23"
class="wp-caption alignright" style="width: 210px">
	<img src="url-de-mon-image.jpg" alt="" />
	<figcaption id="figcaption_attachment-23" 
	class="wp-caption-text">
		Texte de description de l'image
	</figcaption>
</figure>

D’ailleurs ce code est directement présenté dans le codex de WordPress pour illustrer la fonction add_filter.

Il est peut-être possible d’aller encore plus loin en utilisant les microformats. Je me penche sur la question et ne manquerai pas de vous tenir au jus.