WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

SQL запрос для массовой замены определенного текста в постах

Подскажите, как через SQL в PhpMyAdmin сделать массовую замену html тэгов в текстах:

Есть много постов, в которых есть 2 похожих элемента:

1-й:
 <blockquote>

2-й: 
<blockquote>
<h5>

Нужно заменить <blockquote> на <blockquote class="warning">, НО только во втором варианте

Как это сделать?

Поиск по в PhpMyAdmin в БД сайта элемента

<blockquote>
<h5>

ничего оне находит.

0
Александр
3 месяца назад
  • 1
    el-lable205 cайт: el-lable.ru

    Для таких операций существует специализированная утилита для WordPress - https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

    Александр 3 мес назад

    Спасибо за совет!
    Но не могли бы вы подсказать, в чем отличие вами указанного скрипта от других подобных плагинов типа Search Regex и т.п., коих достаточно много?
    Т.к. я пользовался Search Regex, и проблема в том, что они тоже (как и в SQL запросе) не находит связку

     <blockquote><h5>

    Может я просто не знаю, как правильно искать?

    Спасибо.

    Kama 2 мес назад

    Какую регулярку юзаешь для поиска. Вот допустим запрос у меня находит этот пост:

    SELECT *  FROM `wp_posts` WHERE `post_content` REGEXP '<blockquote>\n<h5>'

    Замена так работает:

    UPDATE `wp_posts` 
    SET post_content = REPLACE( post_content, '<blockquote>\n<h5>', '<blockquote class="aaaaa">\n<h5>' ) 
    WHERE `post_content` REGEXP '<blockquote>\n<h5>'
    Александр 2 мес назад

    Спасибо за ответ!

    После долгих поисков решений, я использовал похожий запрос (еще до вашего совета):

    UPDATE wp_posts SET post_content = REPLACE (post_content, '<blockquote>\n<h5>', '<blockquote class="warning">'); 

    Но в результате получилась странная вещь:
    Замена произошла не в опубликованных постах, а в их последних сохраненных копиях.

    Т.е. я открываю любой опубликованный пост на сайте в HTML редакторе вордпресс, перехожу в РЕДАКЦИИ и вижу, что в той редакции, которую видят посетители сайта (т.е. опубликованные), изменений нет. А вот в последней сохраненной редакции замена произошла.

    Но самое странное, что теперь при запросе

    UPDATE wp_posts SET post_content = REPLACE (post_content, '<blockquote>\n<h5>', '<blockquote class="warning">') WHERE post_status = 'publish'; 

    возвращается нулевой результат, т.е. в БД не находится связка

    <blockquote><h5>

    как будто такой комбинации в постах нет. Но по факту-то она есть. Посты на сайте.

    Что это за магия ))

    В результате, я пока до сих пор ищу решение проблемы: как сделать замену?

    Спасибо.

    Александр 2 мес назад

    это вот скрин результата по замене (использую вами предложенный запрос)

    Kama 2 мес назад

    Попробуй '<blockquote>\r\n<h5>'

    Александр 2 мес назад

    Kama, всё сработало! Заменилось!

    Спасибо огромное!
    Я так и подозревал, что только Kama знает, когда искал помощь!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация