web-dev-qa-db-fra.com

Comment personnaliser le code HTML par défaut pour les pièces jointes Wordpress

J'utilise Wordpress 3.0.1 (le plus récent à ce jour) et travaille autour du thème du tableau blanc.

Il semble que pour les pièces jointes (images, en particulier), Wordpress génère automatiquement le code HTML et ressemble à ceci:

<div id="attachment_12" class="wp-caption alignleft" style="width: 310px">
<a rel="shadowbox" href="http://new.michaellane.com/blog/wp-content/uploads/2010/11/areamapchange.png">
<img class="size-medium wp-image-12 " title="Area Map Improvments" src="http://new.michaellane.com/blog/wp-content/uploads/2010/11/areamapchange-300x179.png" alt="Area Map Improvments" width="300" height="179" />
</a>
<p class="wp-caption-text">Area Map Improvments</p>
</div>

Je comprends que certains de ces attributs peuvent être modifiés dans l'écran d'édition lui-même. Toutefois, je souhaite modifier la structure de code HTML par défaut afin d'insérer des balises supplémentaires, des classes CSS, etc.

J'ai besoin d'une méthode pour y parvenir sans modifier aucun fichier en dehors du dossier wp-content - en d'autres termes, il doit exister une méthode basée sur des modèles pour le faire .. des idées?

5
jeffkee

Je souhaite modifier la structure de code HTML par défaut afin d'insérer des balises supplémentaires

Exécutez un filtre sur img_caption_shortcode, vous pouvez trouver ce raccordement dans la source ici. http://core.trac.wordpress.org/browser/tags/3.0.1/wp-includes/media.php#L720

Exemple

add_filter( 'img_caption_shortcode', 'my_caption_html', 10, 3 );
function my_caption_html( $current_html, $attr, $content ) {
    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 ' . $id . 'class="wp-caption ' . esc_attr($align) . '" style="width: ' . (10 + (int) $width) . 'px">'
. do_shortcode( $content ) . '<p class="wp-caption-text">' . $caption . '</p></div>';
}

J'ai essentiellement emprunté la plupart du code de la fonction d'origine pour l'utiliser dans le filtre, mais cela devrait vous donner quelque chose à construire au-dessus de ...

J'espère que cela pourra aider.. :)

10
t31os

Voir aussi Comment puis-je ajouter un champ URL à la fenêtre des pièces jointes? où j’ai posté un petit plugin de démonstration.

2
fuxia