web-dev-qa-db-fra.com

Changer le HTML par défaut

Je fais un thème Wordpress et je veux changer l'image par défaut html. Par exemple, si vous téléchargez une image à l'aide du programme de téléchargement Wordpress, le code HTML suivant est généré pour vos images.

<a href="image_url_goes_here">
    <img class="aligncenter size-full wp-image-100" src="your_src"/>
</a>

Je veux changer quelque chose comme ça

<div class="image-container">
    <img class="aligncenter size-full wp-image-100" src="your_src"/>
</div>
1
theliberalsurfer

Cela fera:

<?php
/*
 * This filter only works with images, for all kind of media check: media_send_to_editor
 * The priority is set to 20 and it takes 8 arguments
 */
add_filter('image_send_to_editor', 'wpse_53577_img_wrapper', 20, 8);

// We are only working with the $html argument, but you can play with all of them 
function wpse_53577_img_wrapper($html, $id, $caption, $title, $align, $url, $size, $alt) 
{
    // If Link URL is set to "File URL" or "Attachment Post URL", the anchor tag gets replaced with the div tag
    $new_html = preg_replace("/\<a(.*)\>(.*)\<\/a\>/iU", "<div class=\"image-container\">$2</div>", $html);

    // If no replacement was done (Link URL == None), wrap the image tag with the div tag
    $html = ($new_html == $html) ? '<div class="image-container">'. $html . '</div>' : $new_html; 

    return $html;
}

Instantané de référence :
snapshot


Le remplacement de la balise d'ancrage est effectué avec une expression régulière (RegEx), avec laquelle je ne suis pas au courant ... Je l'ai trouvé en train d'effectuer cette recherche .

4
brasofilo