Afbeelding ondertiteling filteren in WordPress

Als je in WordPress een afbeelding toevoegt, kan je hier ook een ondertitel aan meegeven. Dit wordt dan meteen netjes weergegeven. Maar in de code die gegenereerd wordt staat ook een breedte die met “style=width=…” wordt meegegeven. Om deze extra, in mijn ogen ongewenste code, er uit te filteren, gaan we een filter aanmaken die we in de functions.php gaan zetten.

De code die voor een ondertitel gegenereerd wordt zit verborgen in een functie in media.php en wel op regel 722. Deze functie moeten we dus gaan overschrijven met onze eigen functie in functions.php en de shortcode voor wp_caption en caption overschrijven met deze nieuwe functie.

add_shortcode('wp_caption', 'fixed_img_caption_shortcode');
add_shortcode('caption', 'fixed_img_caption_shortcode');
function fixed_img_caption_shortcode($attr, $content = null) {
    // Allow plugins/themes to override the default caption template.
    $output = apply_filters('img_caption_shortcode', '', $attr, $content);
    if ( $output != '' )
            return $output;

    extract(shortcode_atts(array(
            'id'	=> '',
            'align'	=> 'alignnone',
            'width'	=> '',
            'caption' => ''
    ), $attr));

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

    if ( $id ) $id = 'id="' . esc_attr($id) . '" ';

    return '
<div>' . do_shortcode( $content ) . '
<div class="wp-caption-text">' . $caption . '</div>
</div>
';
}

Nu krijg je geen extra CSS code bij de uitvoer. Op deze manier kan je zelf de regie nemen met de bijbehorende CSS, zoals het hoort.