При вашем шикарно сформулированном вопросе, ответ будет довольно дурацким <div><img src="" alt=""></div>
С figure аналогично. Только нужно не забыть о том, что у figure есть стили по умолчанию (отступы).
function breezer_addDivToImage( $content ) {
// A regular expression of what to look for.
$pattern = '/(<img([^>]*)>)/i';
// What to replace it with. $1 refers to the content in the first 'capture group', in parentheses above
$replacement = '<div class="myphoto">$1</div>';
// run preg_replace() on the $content
$content = preg_replace( $pattern, $replacement, $content );
// return the processed content
return $content;
}
add_filter( 'the_content', 'breezer_addDivToImage' );
но оно не работает если изображение вставляется с описанием, об этом уже писали https://qna.habr.com/q/382310 и я так и не понял как решить эту проблему