Похоже, что плагины, которые мы нашли, сосредоточены на поиске и замене. Это было не то, что мы искали. Мы просто хотели найти способ идентифицировать посты, в которых определенные строки использовались в контенте.
К сожалению, то же самое верно для WP-CLI, иначе фантастической утилиты. Он также не имеет режима «только поиск».
Допустим, у нас нет phpMyAdmin на нашем сервере, в основном из соображений безопасности. Но у нас есть доступ по SSH. Это оставляет нас с инструментами командной строки «всякий раз, когда нам нужно сделать что-то, выходящее за рамки WordPress».
В этой статье предполагается, что вы можете использовать SSH на своем сервере и запускать команды MySQL.
Подключитесь к вашему экземпляру MySQL:
mysql -u root -p
Вам будет предложено ввести пароль базы данных root. После того, как вы ввели его успешно, вы можете запускать SQL-запросы, например, для вывода списка баз данных:
show databases;
Затем выберите базу данных WordPress (убедитесь, что вы используете правильное имя базы данных из списка выше):
use wordpress;
Следующие команды будут влиять на выбранную базу данных в WordPress.
Теперь мы можем искать сообщения по ключевым словам. Мы готовились к миграции и хотели перечислить посты, которые содержали определенные шорткоды, например «[andreyex]». Следующая команда выводит список всех постов, содержащих эту строку:
SELECT ID, POST_TITLE FROM wp_posts WHERE post_content LIKE '%[andreyex]%' AND post_status = 'publish';
Обратите внимание, что условие поиска заключено в знаки процента (подстановочный знак SQL). Также обратите внимание на проверку опубликованного статуса. Без последнего вы также получите ревизии.
Результат выглядит так:
mysql> SELECT ID, POST_TITLE FROM wp_posts WHERE post_content LIKE '%[quote]%' AND post_status = 'publish';
+-------+-------------------------------------------------------------------------------+
| ID | POST_TITLE |
+-------+-------------------------------------------------------------------------------+
| 59828 | Как установить и настроить Samba в CentOS 7 |
+-------+-------------------------------------------------------------------------------+
9 rows in set (0.03 sec)
Это уже очень хорошо, но было бы намного полезнее, если бы он включал URL каждого поста для легкого доступа. К сожалению, таблица wp_posts хранит только слаг, а не полный URL. Тем не менее, мы можем легко обойти это, объединяя базовый путь URL-адреса с фрагментом каждого поста следующим образом:
mysql> tee posts.txt
Logging to file 'posts.txt'
mysql> SELECT post_title, CONCAT('https://andreyex.ru/', post_name) AS URL FROM wp_posts WHERE post_content LIKE '%[andreyex]%' AND post_status = 'publish';
+-------------------------------------------------------------------------------+------------------------------------------------------------+
| post_title | URL |
+-------------------------------------------------------------------------------+------------------------------------------------------------+
| Как установить и настроить Samba в CentOS 7 | https://andreyex.ru/kak-ustanovit-i-nastroit-samba... |
+-------------------------------------------------------------------------------+------------------------------------------------------------+
9 rows in set (0.12 sec)
mysql> notee
Outfile disabled.
Обратите внимание на использование команды tee для копирования вывода в файл. Файл перезаписывается каждым оператором SQL, поэтому вы захотите отключить эту функцию с помощью команды notee.
И с этим у нас есть удобный текстовый файл, содержащий все URL в нашем блоге, где пост содержит указанное ключевое слово. Счастливой миграции!
Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!
Спасибо! Ваша заявка принята
Спасибо! Ваша заявка принята
:-)