Несколько дней назад вышло обновление к популярной утилите WP-CLI и одно из самых интересных изменений — это поддержка флага --regex
в команде search-replace
WP-CLI это системная утилита для управления сайтами на WordPress в командной строке. Многие хостинг-провайдеры уже давно стали устанавливать ее для своих клиентов. Она позволяет выполнять ряд полезных действий не покидая командную строку, включая управление пользователями, темами, плагинами, обновление ядра, регенерация миниатюр, и конечно же, поиск с заменой по базе данных.
Регулярные выражения
Возможность поиска с заменой в WP-CLI существовала с самых ранних дней утилиты, но только в недавнем обновлении (0.20.0) разработчики добавили флаг --regex
, который позволяет при этом использовать регулярные выражения:
$ wp search-replace '(foo|bar)' 'baz' --regex
Примеры
Совсем недавно мы сталкивались с одним сайтом, где владелец после смены темы также изменил размеры средних и крупных изображений. При этом после регенерации всех миниатюр, в части записей которые ранее использовали средние или крупные размеры изображений, появились битые изображения.
Решить эту проблему простым поиском с заменой сложно, так как путь и названия всех изображений разный, а размер совпадает лишь по ширине. С помощью регулярных выражений решить эту задачу стало гораздо легче:
$ wp search-replace '(wp-content/uploads/.+?)-640x\d+\.(jpe?g|png|gif)' '$1.$3' wp_posts --regex
Таким образом все битые изображения вида filename-640×300.jpg изменились на их оригиналы.
Еще один интересный пример — добавить атрибут target="_blank"
ко всем ссылкам, чтобы они открывались в отдельной вкладке:
$ wp search-replace '<a([^>]+?)(target="_blank")?([^>]+)>' '<a target="_blank" $1 $3>' wp_posts --regex
Обновление
Если вы уже используете WP-CLI, то обновить утилиту до последней версии можно с помощью команды wp cli update
, или установить новую версию в ручную, скачав дистрибутив с официального сайта.
Не забудьте выполнить резервную копию базы данных, прежде чем выполнять поиск с заменой. Если вы плохо знакомы с регулярными выражениями, советуем прочитать книгу Mastering Regular Expressions (также доступна на русском языке).