WordPressでテーマごとに設定を保持できる便利な関数
set_theme_mod( $name, $value )
とその呼出に使う
get_theme_mod( $name )
消すときは remove_theme_mod( $name )
テーマディレクトリ名が変わるとデータが失われる
この関数はテーマが同じディレクトリ名でないとせっかく保存しているデータが利用出来ません。
WordPress のテーマやプラグインでよく使われるデータ保存方法 update_option と同様、 wp_options テーブルに保存されます。
保存される際の option_name が下記のようになります。
theme_mods_twentysixteen ※twentysixteen の設定データ
中身はシリアライズされたデータです。
サンプル
a:1:{s:16:"sidebars_widgets";a:2:{s:4:"time";i:1466742279;s:4:"data";a:2:{s:19:"wp_inactive_widgets";a:0:{}s:9:"sidebar-1";a:6:{i:0;s:8:"search-2";i:1;s:14:"recent-posts-2";i:2;s:17:"recent-comments-2";i:3;s:10:"archives-2";i:4;s:12:"categories-2";i:5;s:6:"meta-2";}}}}
…というデータ格納時の事情もあり、ディレクトリ名が変わってしまうとテーマで設定したデータが使えなくて初期化されてしまうわけです。
…以上ですっ!
update_option であればテーマが変更しても変わりません。
update_option( $name, $value ) で登録した値はテーマが変わっても使えます。
get_option( $name ) で取得します。
…というかテーマやプラグインで登録したとして、そのテーマやプラグインをアンインストールしても、テーマ・プラグインの中でアンインストール時にパラメータを削除する仕様がなければそのまま残り続けます。
もう一度同じテーマ・プラグインをインストールすると使えるので良し悪しではあるんですが、定期的に使ってないパラメータを掃除する必要がある・・・かもしれません。
…用途に応じて使いどころを見極めましょう。
ちなみに・・・
update_site_option っていうのもある
update_site_option はサイトごとの設定です。
…それってなにに? と思うかもしれません。
マルチサイト用の関数になります。
ただ、この関数は現在(ver.4.4以降)
update_network_option
に機能が移りました。
update_site_option を使っても内部で update_network_option が呼ばれているようです。
あまり使わないのでどういうパラメータを入れるのか想像するだけです(笑)