Я хочу автоматизировать обновление параметров плагина. Есть некоторые вещи, которые я повторяю много раз.
С помощью wp-cli я знаю, что могу обновить простые опции, например:
php wp-cli.phar option update blog_public 1
Однако некоторые параметры плагина сохраняют свои параметры в сериализованной строке.
Пример сериализованного option_value в wp_options:
a:9:{s:4:"from";s:21:"xx@xxx.com";s:8:"fromname";s:51:"xxx";s:4:"host";s:13:"smtp.xx.com";s:10:"smtpsecure";s:3:"ssl";s:4:"port";s:3:"465";s:8:"smtpauth";s:3:"yes";s:8:"username";s:21:"xx@xxx.com";s:8:"password";s:13:"xxx";s:10:"deactivate";s:0:"";}
Как обновить эти параметры?
option update
строку в одинарных кавычках. См. Мою реализацию в строке 61 здесь: gist.github.com/squarecandy/cfdead55ca1d84496044WP-CLI определенно является ответом на это после обновления до 1.4.0, в котором были введены команды pluck и patch для доступа к сериализованным данным в WordPress.
Команда pluck использует этот формат для захвата сериализованных значений.
Например, в опции active_plugins вы можете получить первый элемент
Команда patch использует этот формат для вставки, обновления или удаления сериализованных значений (действие)
Удаление первого active_plugin будет выглядеть так
То же самое дополнение и патч были также добавлены для других команд, таких как postmeta, теперь вы можете использовать WP-CLI, чтобы сделать несколько крутых циклов для программного обновления сериализованных данных WordPress.
источник
Вот как я это делаю в скрипте bash:
источник
WP-CLI команда
option
действительно использует WordPress' Options API , чтобы делать свою работу. Учитывая, например, подкомандуupdate
, правильный ввод,array
вы должны быть в состоянии сделать это с WP-CLI. Вы должны использовать этот--format
параметр здесь, чтобы убедиться, что вы получаете то же самое, вjson
целом работает нормально дляupdate
подкоманды. Обратите внимание, что подкомандаget
должна возвращать вам вариант не сериализованным, поскольку используется API параметров, который затем можно сохранять, изменять и / или передавать / настраивать в других / новых установках.источник
wp option get wp_smtp_options > savedconfiguration.txt
wp option update wp_smtp_options < savedconfiguration.txt
первая команда сохраняет как массив, а вторая не принимает массив. Я думаю, что я должен сначала сериализовать это, вы знаете, как это сделать?format
параметр? @lalo edit: только что видел, как ты понял этоformat
параметра. Интересно, возможно ли это без использования промежуточного файла, как я написал в своем ответе.format
параметра, который иногда отличается от (под) команды до (под) команды. Это, безусловно, возможно, например, написав сценарий bash и сохранив данные в переменной. @lalo--format
доступны варианты: github.com/wp-cli/wp-cli/blob/master/php/commands/…