您可以尝试image_send_to_editor
过滤器:
/**
* Wrap the inserted image html with <figure>
* if the theme supports html5 and the current image has no caption:
*/
add_filter( \'image_send_to_editor\',
function( $html, $id, $caption, $title, $align, $url, $size, $alt )
{
if( current_theme_supports( \'html5\' ) && ! $caption )
$html = sprintf( \'<figure>%s</figure>\', $html ); // Modify to your needs!
return $html;
}
, 10, 8 );
您可以在将图像插入编辑器时修改图像的html。
我添加了支票current_theme_supports( \'html5\' )
在上述过滤器中,要检查您是否具有以下内容:
add_theme_support( \'html5\', array( ... ) );
在您的主题中。但您可能不希望此筛选器回调依赖于当前主题,因此如果需要,可以将其删除。
您也可以尝试get_image_tag
滤器
Update: 以下是@bueltge评论中有用的unautop函数(为了更好的可读性):
// unautop for images
function fb_unautop_4_img( $content )
{
$content = preg_replace(
\'/<p>\\\\s*?(<a rel=\\"attachment.*?><img.*?><\\\\/a>|<img.*?>)?\\\\s*<\\\\/p>/s\',
\'<figure>$1</figure>\',
$content
);
return $content;
}
add_filter( \'the_content\', \'fb_unautop_4_img\', 99 );