サポート » テーマ » register_settingで登録した項目の削除について

  • 解決済 やまじゅん

    (@yambal)


    お世話になります
    つい先日からテーマの作成にチャレンジしている初心者です。
    何卒よろしくお願いいたします。

    add_action('admin_init','on_init');
    function on_init() {
    	register_setting('my-setting','version');
    }

    のようにテーマで使う設定項目を登録しました
    管理画面で変更するフォームを作成し、うまくいっています。

    さて、他のテーマに変更されたとき、
    設定項目を削除したいと思い、

    add_action('switch_theme','on_bye');
    function on_bye() {
    	unregister_setting('my-setting','version');
    }

    とかやってみましたが、削除されない様子です。
    (テーマを他のものに変更し、改めてテーマを適用すると、前の値が入っている)

    何か勘違いしているような気もするのですが、
    アドバイスやヒントなどをいただけたら助かります。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • こんにちは

    register_setting()、unregister_setting()は、設定の登録、削除ですが、単体でデータベースへの値の保存を担うわけではなく、unregister_setting()を実行しても、データベースから値が削除されるわけではありません。

    通常、setting_fields()と組み合わせて使いますが、簡単にデータベースに値を保存できる反面、データベースへの保存の動きが分かりに難くなっています。

    要は、add_option()やupdate_option()を使った場合と同様に、値はデータベースのoptionsテーブルに保存されます。

    データベースから削除したい場合は、

    unregister_setting('my-setting','version');

    で登録されている値なら

    delete_option('version');

    で削除されます。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「register_settingで登録した項目の削除について」には新たに返信することはできません。