Как удалить все ссылки с постов разом?

Ссылка скопирована
1 ответ

На сайте есть куча постов, и в каждом есть по одной - две ссылки, подскажите, как можно удалить все разом.
Плагин может есть ?

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Мария Код Ответ

Удалить все ссылки из постов разом можно, но это рискованная операция: можно потерять полезные внутренние ссылки, сломать разметку, удалить ссылки из кнопок, изображений, источников и навигационных блоков внутри контента. Сначала обязательно сделайте бэкап базы и протестируйте на копии.

Если нужно убрать только теги a, оставив текст ссылки, лучше использовать скрипт на PHP с DOMDocument, а не массовую SQL-замену регуляркой. SQL-регулярки по HTML легко ломают контент.

Пример логики для одной записи:

$content = get_post_field('post_content', $post_id);
 
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML('<div id="root">' . mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8') . '</div>');
 
$links = $dom->getElementsByTagName('a');
 
for ($i = $links->length - 1; $i >= 0; $i--) {
    $a = $links->item($i);
    $text = $dom->createTextNode($a->textContent);
    $a->parentNode->replaceChild($text, $a);
}

$content = get_post_field('post_content', $post_id); $dom = new DOMDocument(); libxml_use_internal_errors(true); $dom->loadHTML('<div id="root">' . mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8') . '</div>'); $links = $dom->getElementsByTagName('a'); for ($i = $links->length - 1; $i >= 0; $i--) { $a = $links->item($i); $text = $dom->createTextNode($a->textContent); $a->parentNode->replaceChild($text, $a); }

Но перед массовым запуском нужно решить, какие ссылки удалять:

  • только внешние;
  • только nofollow/партнёрские;
  • все ссылки в post_content;
  • исключить изображения и кнопки;
  • не трогать внутренние ссылки.

Для WordPress есть плагины поиска/замены, но “удалить все ссылки” лучше делать одноразовым скриптом с отчётом: ID записи, сколько ссылок было, какие URL удалены. Тогда можно проверить результат и откатиться.

Итог: не делайте слепой replace в базе. Сначала выгрузите список ссылок, решите правила удаления, сделайте бэкап, прогоните 10 записей на тесте и только потом запускайте массовую очистку.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно