В этой заметке остановлюсь на том, как удалить неиспользуемый текст со всех страниц сайта сразу. Нам не придётся открывать каждую запись, искать какое-то определённое, уже ненужное слово или словосочетание, удалять его вручную и потом пересохранять запись.
Содержание:
При помощи SQL-запроса
Для удаления конкретного текста из всех записей на сайте WordPress с помощью SQL-запроса необходимо использовать команду UPDATE в сочетании с функцией REPLACE. Этот процесс позволяет найти и заменить указанный текст в столбце post_content таблицы wp_posts.
Шаги для удаления конкретного текста
Давайте шаг за шагом пройдём этот путь. Здесь ничего сложного нет. Выполним следующее:
- Создание резервной копии базы данных. Перед выполнением любых операций с базой данных, создайте резервную копию, чтобы предотвратить потерю данных.
1mysqldump -u username -p database_name > backup.sql - Поиск записей с текстом. Найдите записи, содержащие нужный текст, чтобы убедиться, что изменения будут выполнены корректно.
123SELECT ID, post_contentFROM wp_postsWHERE post_content LIKE '%text_to_remove%'; - Удаление текста. Используйте UPDATE и REPLACE, чтобы удалить указанный текст из всех записей.
123UPDATE wp_postsSET post_content = REPLACE(post_content, 'text_to_remove', '')WHERE post_content LIKE '%text_to_remove%';
Пример полного процесса
Допустим, вы хотите удалить текст «example text» из всех записей:
- Создание резервной копии базы данных:
1mysqldump -u username -p database_name > backup.sql - Поиск записей с текстом:
123SELECT ID, post_contentFROM wp_postsWHERE post_content LIKE '%example text%'; - Удаление текста:
123UPDATE wp_postsSET post_content = REPLACE(post_content, 'example text', '')WHERE post_content LIKE '%example text%';
Дополнительные замечания
Операции с чувствительностью к регистру: SQL-запросы могут быть чувствительны к регистру, в зависимости от настроек вашей базы данных. Если необходимо игнорировать регистр, можно использовать функции для приведения текста к нижнему регистру, например:
1 2 3 |
UPDATE wp_posts SET post_content = REPLACE(LOWER(post_content), 'example text', '') WHERE LOWER(post_content) LIKE '%example text%'; |
Удаление сложных строк. Если текст для удаления содержит специальные символы или требует более сложной обработки, рекомендуется использовать PHP-скрипт с функциями регулярных выражений для точного удаления текста.
PHP-скрипт для удаления текста из всех записей в WordPress
Если текст для удаления более сложен, лучше использовать PHP-скрипт. Этот PHP-скрипт будет искать и удалять указанный текст во всех постах базы данных WordPress, что может быть полезно для более сложных задач, требующих гибкости и точности. Скриптик, безусловно, подходит и для ликвидации простых текстов, и для удаления шорткодов. Пользоваться им мне понравилось даже больше, чем SQL-запросами.
Далее пойдет скрипт, в котором надо выполнить следующее:
- Текст, который нужно удалить, следует указать в вызове функции str_replace.
- Настройка параметров подключения к базе данных. Замените ‘localhost’, ‘username’, ‘password’, ‘database_name’ на соответствующие значения для вашей базы данных.
- Указание текста для удаления. Замените ‘text_to_remove’ на текст, который вы хотите удалить.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php // Настройки подключения к базе данных $mysqli = new mysqli('localhost', 'username', 'password', 'database_name'); // Проверка соединения if ($mysqli->connect_error) { die('Ошибка подключения (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); } // Указание текста для удаления $text_to_remove = 'text_to_remove'; // Запрос для получения всех постов, содержащих текст для удаления $result = $mysqli->query("SELECT ID, post_content FROM wp_posts WHERE post_content LIKE '%$text_to_remove%'"); // Проход по результатам while ($row = $result->fetch_assoc()) { // Замена указанного текста на пустую строку $new_content = str_replace($text_to_remove, '', $row['post_content']); $id = $row['ID']; // Обновление поста с новым содержимым $stmt = $mysqli->prepare("UPDATE wp_posts SET post_content = ? WHERE ID = ?"); $stmt->bind_param('si', $new_content, $id); $stmt->execute(); } // Закрытие соединения $mysqli->close(); echo "Удаление текста завершено."; ?> |
Как использовать
Выполните эти нехитрые действия:
- Сохраните скрипт в файл, например, remove_text.php.
- Измените параметры подключения к базе данных: замените ‘localhost’, ‘username’, ‘password’, ‘database_name’ на свои данные для подключения к базе данных WordPress.
- Укажите текст для удаления: замените ‘text_to_remove’ на текст, который вы хотите удалить.
- Запустите скрипт: загрузите файл на ваш сервер и выполните его через браузер или командную строку. Например, откройте в браузере http://yourdomain.site/remove_text.php.
Пример
Если вы хотите удалить текст «example text», замените ‘text_to_remove’ на ‘example text’:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php // Настройки подключения к базе данных $mysqli = new mysqli('localhost', 'username', 'password', 'database_name'); // Проверка соединения if ($mysqli->connect_error) { die('Ошибка подключения (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); } // Указание текста для удаления $text_to_remove = 'example text'; // Запрос для получения всех постов, содержащих текст для удаления $result = $mysqli->query("SELECT ID, post_content FROM wp_posts WHERE post_content LIKE '%$text_to_remove%'"); // Проход по результатам while ($row = $result->fetch_assoc()) { // Замена указанного текста на пустую строку $new_content = str_replace($text_to_remove, '', $row['post_content']); $id = $row['ID']; // Обновление поста с новым содержимым $stmt = $mysqli->prepare("UPDATE wp_posts SET post_content = ? WHERE ID = ?"); $stmt->bind_param('si', $new_content, $id); $stmt->execute(); } // Закрытие соединения $mysqli->close(); echo "Удаление текста завершено."; ?> |
Этот скрипт удалит все вхождения текста «example text» из всех записей в таблице wp_posts. Убедитесь, что у вас есть резервная копия базы данных перед выполнением таких операций!
Всем WEB!
Как раз только что искал, как удалить словосочетание с множества страниц. Получилось, благодарю!
Отлично, полезная штуковина.
спасибо, помогло!