今回の記事では、管理画面の一般設定に項目を追加する方法について紹介します。
一般設定は、サイトの基本情報を格納していますが、デフォルトの設定項目に加えて、追加で情報を格納したいケースもあります。

要件

今回は下記の情報を一般設定に追加します。

  • 電話番号
  • FAX番号
  • 郵便番号
  • 住所

実装

まずは完成形のイメージです。

入力部分を追加 functions.php

<?php

function add_custom_option_fields()
{
    add_settings_field( 'phone_number', '電話番号', 'display_custom_option_1', 'general');
    add_settings_field( 'fax_number', 'FAX番号', 'display_custom_option_2', 'general');
    add_settings_field( 'postal_code', '郵便番号', 'display_custom_option_3', 'general');
    add_settings_field( 'address', '住所', 'display_custom_option_4', 'general');
    register_setting( 'general', 'phone_number' );
    register_setting( 'general', 'fax_number' );
    register_setting( 'general', 'postal_code' );
    register_setting( 'general', 'address' );
}
add_filter( 'admin_init', 'add_custom_option_fields' );


// 入力部品の出力
function display_custom_option_1()
{
    $display_custom_option_1 = get_option( 'phone_number' );
    ?>
    <input type="text" id="phone_number" name="phone_number" value="<?php echo $display_custom_option_1; ?>">
    <?php
}
function display_custom_option_2()
{
    $display_custom_option_2 = get_option( 'fax_number' );
    ?>
    <input type="text" id="fax_number" name="fax_number" value="<?php echo $display_custom_option_2; ?>">
    <?php
}
function display_custom_option_3()
{
    $display_custom_option_3 = get_option( 'postal_code' );
    ?>
    <input type="text" id="postal_code" name="postal_code" value="<?php echo $display_custom_option_3; ?>">
    <?php
}
function display_custom_option_4()
{
    $display_custom_option_4 = get_option( 'address' );
    ?>
    <input type="text" id="address" name="address" value="<?php echo $display_custom_option_4; ?>">
    <?php
}

解説

add_settings_field

add_settings_field()を使用して、設定項目の登録を行います。
構文については公式ドキュメントを参照してください。

第三引数(display_custom_option_1など)で、描画処理をコーヅバックで呼び出しています。

register_setting

register_setting()では、データを保存する際のname属性を保存します。
add_settings_field()で指定したid値と同一にする必要があります。

上記の記述を、functions.php内に記述をすることで、一般設定に項目を追加できるようになります。

カテゴリー: WordPress