Сышышь ты, выходи сюда,
поговорим !

Поиск с заменой в базе данных WordPress с использованием регулярных выражений

Опубликовано: 02.09.2018

Несколько дней назад вышло обновление к популярной утилите 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 (также доступна на русском языке ).

rss