MENU

add_settings_field()

add_settings_field() は、WordPress の設定ページに新しい設定フィールドを追加するための関数です。

管理画面の「設定」セクションにカスタム入力欄を作成する際に使用されます。

例えば、独自のオプションを管理するためにテキストボックスやチェックボックスを追加できます。register_setting()add_settings_section() と組み合わせて使用することで、設定ページの拡張が可能になります。

目次

機能の説明

add_settings_field() とは?

この関数は、WordPress の管理画面の「設定」ページにカスタムの入力フィールドを追加するために使われます。具体的には、以下のような場合に役立ちます。

  • テーマやプラグインの設定オプションを追加する
  • テキストボックス、チェックボックス、ラジオボタンなどの入力欄を作成する
  • register_setting() と連携して値を保存・管理する

基本的な仕組み

add_settings_field() は、以下のような要素と連携します。

  1. register_setting() – 設定項目を登録する
  2. add_settings_section() – 設定セクションを作成する
  3. add_settings_field() – 設定フィールド(入力欄)を追加する

シンプルなコード例

add_settings_field(
    'custom_text',        // 設定フィールドのID
    'カスタムテキスト',   // ラベル
    'custom_text_callback', // フィールドの表示用関数
    'general'             // 設定ページ(general, reading, writing など)
);
  • custom_text はフィールドの一意のID
  • 'カスタムテキスト' は設定ページでのラベル表示
  • custom_text_callback はフィールドの出力関数
  • 'general' は設定ページ(例: 一般設定)

このコードだけでは表示されるだけなので、値を保存する処理が必要です。

使い方の説明

基本的な実装方法

以下のコードは、「一般設定(general)」にテキスト入力欄を追加し、その値を保存・取得するものです。

function my_custom_settings_init() {
    // 設定を登録
    register_setting('general', 'custom_text');

    // 設定セクションを追加
    add_settings_section(
        'custom_section',
        'カスタム設定セクション',
        function() { echo '<p>ここにカスタム設定を追加できます。</p>'; },
        'general'
    );

    // 設定フィールドを追加
    add_settings_field(
        'custom_text',
        'カスタムテキスト',
        'custom_text_callback',
        'general',
        'custom_section'
    );
}
add_action('admin_init', 'my_custom_settings_init');

// フィールドの表示用コールバック関数
function custom_text_callback() {
    $value = get_option('custom_text', '');
    echo '<input type="text" name="custom_text" value="' . esc_attr($value) . '" />';
}
register_setting('general', 'custom_text');

custom_text というオプションを WordPress に登録

add_settings_section()

新しい設定セクション custom_section を作成

add_settings_field()

custom_text というテキスト入力欄を追加

custom_text_callback()

get_option('custom_text') で保存された値を取得し、入力欄に表示

一緒に使うことが多い関連タグ

register_setting()

設定項目を登録する関数。

register_setting('general', 'custom_text');

general の設定グループに custom_text というオプションを登録する。

add_settings_section()

設定ページ内にセクションを追加する関数。

add_settings_section('custom_section', 'カスタム設定', '', 'general');

'custom_section' というセクションを 'general' に追加する。

get_option()

保存されたオプションの値を取得する関数。

$value = get_option('custom_text', '');

'custom_text' の値を取得し、未設定の場合は空の値を返す。

update_option()

オプションの値を更新する関数。

update_option('custom_text', '新しい値');

'custom_text' の値を '新しい値' に更新する。

追加情報で取得したい場合

すべてのオプションを取得する

現在の設定値をすべて確認したい場合は、以下の関数を使います。

$options = wp_load_alloptions();
print_r($options);

wp_load_alloptions() は、すべての autoload オプションを取得する。

特定の設定グループのオプションを取得する

$option = get_option('custom_text', 'デフォルト値');

custom_text が未設定の場合、'デフォルト値' を返す。

想定されるトラブル

設定が保存されない

解決方法

  • register_setting() で適切にオプションを登録しているか確認する。
  • settings_fields()options.php で正しく読み込んでいるか確認する。

設定が表示されない

解決方法

  • add_settings_field() で指定した設定ページ (general, reading など) が正しいか確認する。
  • custom_text_callback()get_option() を使用しているか確認する。

Q&A

add_settings_field() はどの設定ページに追加できますか?

general, writing, reading, discussion, media, permalink などの標準設定ページに追加できます。

設定値を削除するにはどうすればいいですか?

delete_option('custom_text'); を実行すると、データベースから削除されます。

add_settings_field() でカスタム管理ページに追加できますか?

add_options_page() でカスタム設定ページを作成し、そのページの menu_slugadd_settings_field() に渡せば可能です。

まとめ

add_settings_field() は、WordPress の管理画面の設定ページに新しい入力フィールドを追加するための重要な関数です。

この関数は register_setting()add_settings_section() と組み合わせることで、より高度な設定ページを作成できます。適切に get_option()update_option() を使うことで、ユーザーがカスタム設定を簡単に管理できるようになります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次