Полезные команды по замене данных и текста в MySQL, которые выполняются в phpMyAdmin с помощью SQL-запросов к базе данных. Команды используются для массовой замены данных в WordPress.
Команда замены в таблицах MySQL
Универсальный пример
Массовая замена текста в записях (статьях) WordPress
Пример. Как-то мне понадобилось заменить во всех текстах тег blockquote на теги div. Для этого потребовалось ввести следующую команду.
UPDATE wp_posts SET post_content = REPLACE (post_content, '</blockquote>', '</div>');
Замена путей для изображений в MySQL
Массовая замена (изменение) имени автора в WordPress
У вас могут быть и другие таблицы, где фигурирует ваше имя. Нужно смотреть по плагинам, где используются имя автора блога (или любой другой). Например, в примере ниже меняется автор во всех комментариях, рейтингах и некоторых других таблицах.
UPDATE `wp_ratings` SET `rating_username` = REPLACE(rating_username, 'Old_name', 'New_name' ) ;
UPDATE `wp_relevanssi` SET `term` = REPLACE(term, 'Old_name', 'New_name' ) ;
UPDATE `wp_bp_xprofile_data` SET `value` = REPLACE(value, 'Old_name', 'New_name' ) ;
Замена произвольных полей в MySQL
Для замены произвольного поля ‘premiere_ru’ в таблице wp_postmeta, где значения «—» нужно поменять на пустые:
Как сделать выборку незаполненных произвольных полей
Это удобно делать, когда нужно массово заполнить произвольные поля к разным записям одновременно.
В примере ниже выведем в таблице wp_postmeta, произвольное поле premiere, которое является пустым.
Скриншот из программы Sequel Pro при подобной выборке:
Разновидность запроса, которая также выведет незаполненные поля:
Как вывести пустое значение произвольного поля, если оно не задано вообще, я пока не понял, но можно использовать запрос wp_query для вывода постов.
Массовая замена URL сайта на WordPress
Полезные команды, когда нужно сменить адрес сайта на WordPress в базе данных MySQL. Обычно пригождается, когда переносится база данных с тестового сайта на рабочий URL.
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://localhost:8888/ploshadka.net', 'https://ploshadka.net');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://localhost:8888/ploshadka.net', 'https://ploshadka.net');
UPDATE wp_posts SET guid = REPLACE (guid, 'http://localhost:8888/ploshadka.net', 'https://ploshadka.net') WHERE post_type = 'attachment';
Замена URL сайта для WordPress на localhost
В обратном случае, при переносе сайта с удаленного сервера на локальный веб-сервер:
UPDATE wp_posts SET post_content = REPLACE (post_content, 'https://ploshadka.net', 'http://localhost:8888/ploshadka.net');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'https://ploshadka.net', 'http://localhost:8888/ploshadka.net');
UPDATE wp_posts SET guid = REPLACE (guid, 'https://ploshadka.net', 'http://localhost:8888/ploshadka.net') WHERE post_type = 'attachment';
Вместо моего сайта поставьте свой.
Замена старых URL на новые
Меняем старые ссылки в записях, в комментариях и настройках. В результате старый URL останется только в таблице wp_postmeta поля meta_key в качестве старого слага (_wp_old_slug). Пусть хранится на всякий случай, это никак не мешает работе сайта. Наоборот, будет переадресация в случае чего.
UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'https://ploshadka.net/old_url/', 'https://ploshadka.net/new-url/');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'https://ploshadka.net/old_url/', 'https://ploshadka.net/new-url/');
Очистка WordPress от ревизий
И полезная команда по очистке лишних ревизий в WordPress.
Не работают запросы SQL
Бывает, вы вводите правильные запросы SQL, запускаете их и ничего не меняется. Результат пишется, что изменено 0 строк. В этом случае попробуйте переписать под копирку запросы на клавиатуре. По каким-то причинам в результате копирования иногда запросы могут не работать. Возможно вставляется не тот апостроф или может какой ещё невидимый атрибут/символ.
Здравствуйте. А если мне необходимо в моих записях изменить текст, который расположен в нескольких строках, например это:
<!-- wp:paragraph -->
нужно изменить на это:
Как это можно сделать с помощью SQL запроса?
Спасибо.
В первое значение поставьте искомый запрос , а второе оставьте пустым.
День добрый!
Подскажите, как сделать:
Есть много постов, в которых есть 2 похожих элемента:
1-й:
2-й:
НО
Как это сделать?
Поиск по БД элемента
ничего оне находит, т.к. они, судя по всему, находятся на разных строчках.
Спасибо.
По комментарию ничего не понятно. Как будто хотите одни и те же элементы поменять. Возможно код потерялся. Надо было его обрамить тегами code.
Да, часть сообщения просто потерялась. Пробую еще раз. Спасибо.
1-й:
<blockquote>
2-й:
<blockquote>
<h5>
Нужно заменить <blockquote> на <blockquote class="warning">, НО только во втором варианте (т.е. когда <blockquote>
<h5>)
Как это сделать?
Поиск по БД элемента
<blockquote>
<h5>
ничего оне находит, т.к. 2 тега, судя по всему, находятся на разных строчках.
Спасибо
Сходу не скажу, надо гуглить. Как вариант зайти в БД и поискать все значения blockquote. Посмотреть как они там записаны. Это вбить в строку поиска для замены.
Классная статья. Replace рулит. После него, особенно, в options гарантированно все слетит к чертям. Автор, пиши про сериализованные данные!!!
Приветствую. Не подскажите, как массово черновики записей изменить на отложенную публикацию?
Приветствую! Подскажите, как можно массово изменить год в Н1 для сайта на WP на актуальный?
На подобные вопросы без конкретики не ответить.
Какой год, в каком H1, почему год не актуальный и т.д. все это из вашего сообщения не понятно.
Прошу прощения за задержку, видимо уведомления в спам ушло.
Есть записи на сайте, где в заголовках в Н1, Н2, и Н3 фигурируют старые года в конце. Например Исковое заявление образец 2020, или Как заменить водительское удостоверение в 2019 году. Получается год, нужно поменять на 2022.
Это или в редактировании записей надо править (в 99% случаев). Или в коде сайта поищите.
Здравствуйте. Столкнулся с проблемой. На сайте 74 000 сгенерированных страниц. На них есть блок с 6ю ссылками. На одной половине страниц ссылки находятся в блоках с картинками. На другой просто ссылки и 1 косячный блок, где должна быть ссылка, но выходит только текст «gruz_links».
Вопрос — Как можно заменить второй вариант, где блок с косячной ссылкой на первый вариант? Через MySql?
Вопрос 2 — Можно ли ОБА варианта блока, заменить на другой вариант, где используется другой дизайн, но ссылки остаются?
Очень помогло спасибо!