You should be able to use the the_content
filter for this. Something like this…
add_filter( 'the_content', 'wpse418925_replace_images_with_alt' );
function wpse418925_replace_images_with_alt( $content ) {
// If you need to *only* do this on one post, check that we're in that post.
// $desired_post can be an ID, post title, slug, or an array of any of those.
if ( is_single( $desired_post ) ) {
$content = preg_replace( '/<img.*(alt="[^"]+")[^>]*>/', '(Image. $1)', $content );
}
return $content;
}
… might do what you’re looking for.
Notes
- This code is untested. Try it out on a local installation or a test site first.
- This code is meant as a starting point only. In particular, it’s likely you’ll have to tweak the regular expression to suit your situation.
preg_replace()
can be a “heavy” function, ie, time-intensive. You might want to consider caching the post’s modified content to an option or to post_meta.