add_filter( 'the_content', 'attachment_image_link_remove_filter' );
function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(
array('{<a(.*?)(wp-att|wp-content\/uploads)[^>]*><img}',
'{ wp-image-[0-9]*" /></a>}'),
array('<img','" />'),
$content
);
return $content;
}
Регулярное выражение может быть проще, и, к сожалению, это также лишает вас уникального wp-image-xxx
(где xxx - идентификатор вложения) <img>
тега, но это самый безопасный вариант, который я могу придумать, чтобы удалять только ссылки на изображения вложения и оставлять ссылки в тексте. а также ссылки вокруг не прикрепленных изображений нетронутыми.
Если вас не интересуют изображения без вложений, и вы хотите, чтобы все изображения в содержимом публикации не оборачивались ссылками, этого должно быть достаточно:
function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
return $content;
}
Я могу видеть, как это ломает вещи, если внутри якоря заканчивается какой-то другой самозакрывающийся элемент, такой как <br />
тег. Это было бы редко, очевидно, но я бы рекомендовал использовать первую, хотя и более длинную версию.