удалить ссылки с изображений с помощью functions.php

8

Я ищу способ удалить ссылку вложения из изображений в содержании сообщения.

Я хотел бы добавить это к functions.php в моей теме. Я знаю, что вы можете отключить это в посте для каждого изображения, но я хотел бы сделать это только один раз на моей странице functions.php. Любые идеи?

Спасибо Барт

digitalbart
источник

Ответы:

5
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 />тег. Это было бы редко, очевидно, но я бы рекомендовал использовать первую, хотя и более длинную версию.

Йоханнес Пилле
источник
Спасибо, это сработало отлично! Я закончил тем, что использовал первый, и да, это сэкономило мне много времени.
digitalbart