web-dev-qa-db-ja.com

デフォルト画像のHTMLを変更する

私はWordpressのテーマを作っていて、デフォルトの画像のHTMLを変更したいのです。たとえば、Wordpressアップローダを使用して画像をアップロードすると、画像用に次のHTMLが生成されます。

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

このようなものに変更したい

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

これはするでしょう:

<?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;
}

参照スナップショット
snapshot


アンカータグの置き換えは正規表現(RegEx)を使って行われますが、これは慣れていません... この検索 をやっているのがわかりました。

4
brasofilo