$wp_cusomize
(WP_Customize_Manager
のインスタンス)のadd_setting
でtype
をtheme_mod
に設定した場合は、wp_options
テーブルのoption_name
列にtheme_mods_{{theme-domain}}
が、option_value
に値がシリアライズして格納されます(下記例ではtheme_mods_{{theme-domain}}
にsampleおよびsample2の値がシリアライズして格納)。
$wp_customize->add_setting(
'sample',
array(
'default' => 'default value',
'type' => 'theme_mod', // theme_modを指定した場合 wp_optionsのoption_nameがtheme_mods_{{theme-domain}}のoption_valueにシリアライズして格納される
'transport' => 'refresh',
'sanitize_callback' => '{{ sanitize_callback }}',
)
);
...
$wp_customize->add_setting(
'sample2',
array(
'default' => 'default value',
'type' => 'theme_mod', // theme_modを指定した場合 wp_optionsのoption_nameがtheme_mods_{{theme-domain}}のoption_valueにシリアライズして格納される
'transport' => 'refresh',
'sanitize_callback' => '{{ sanitize_callback }}',
)
);
'1'
''
$ mysql -u {user}} -p -A {{db}} -h {{host}}wordpress-db -e 'select option_value from wp_options where option_name = "theme_mods_{{theme-domain}}";' > theme_mods.sql
unserialize(theme_mod.sqlの中身);
改行した文字をシリアライズシている場合unserialize
関数でエラーが発生する。
以下のサイトを参考にシリアライズし直してからシリアライズする。
以下再シリアライズするコードを以下から引用する。 https://keruuweb.com/php-unserialize-error/
$data = preg_replace_callback('!s:(\d+):"([\s\S]*?)";!', function($m) {
return 's:' . strlen($m[2]) . ':"' . $m[2] . '";';
}, $data);