WordPressのテーマをカスタマイズしたり、オリジナルテーマを作ったりするときに、必ずと言っていい程、必要になるのがカスタマイザーにオリジナルの項目の追加です。
その方法を簡単にまとめました。
functions.phpにアクションフックを使います。
アクションフックを準備
function my_customizer( $wp_customize )
{
    //  ここに追加していく
    //      セクション
    //      セッティング
    //      コントロール
}
add_action("customize_register","my_customizer");
customize_registerというフックを使います。
セクション
カスタマイザーにオリジナル項目を追加するためのセクションをadd_section()で用意します。
function my_customizer( $wp_customize )
{
    $wp_customize->add_section
    (
        "my_section",
        array
        (
            "title"     =>  "任意の項目名",
            "priority"  =>  200
        )
    );
}
add_action("customize_register","my_customizer");
add_sectionでカスタマイザーに1行追加できます。
- title:カスタマイザーに表示される項目名になります。
 - priority:カスタマイザーに表示する位置を指定します。
大きい程下に表示されます。 
しかし、まだこれではカスタマイザーに表示されません。
セクション配下のセッティングとコントロールを記述して初めて表示されすからです。
では、先補で追加したmy_sectionにセッティングを設定します。
セッティング
function my_customizer( $wp_customize )
{
    $wp_customize->add_section
    (
        "my_section",
        array
        (
            "title"     =>  "任意の項目名",
            "priority"  =>  200
        )
    );
    $wp_customize->add_setting
    (
        "my_text_setting",
        array
        (
            "default"   =>  "",
            "priority"  =>  1000
        )
    );
}
add_action("customize_register","my_customizer");
my_section配下にmy_text_settingをセッティングIDを設定します。
コントロール
function my_customizer( $wp_customize )
{
    $wp_customize->add_section
    (
        "my_section",
        array
        (
            "title"     =>  "任意の項目名",
            "priority"  =>  200
        )
    );
    $wp_customize->add_setting
    (
        "my_text_setting",
        array
        (
            "default"   =>  "",
            "priority"  =>  1000
        )
    );
    $wpcustomize->add_control
    (
        $name,
        array
        (
            'section'   =>  "my_section",
            'settings'  =>  "my_text_setting",
            'label'     =>  "1行のテキスト",
            'type'      =>  "text"
        )
    );
}
add_action("customize_register","my_customizer");
my_section配下にmy_text_controlをを設定します。
ここまででカスタマザーの表示を確認しましょう。

カスタマイザーに任意の項目名が1行使いされました。
これをクリックすると!!。

1行の入力域が完成しました。
次は様々な入力タイプ別です。
複数行テキスト
    // 複数行テキスト
    $wp_customize->add_setting
    (
        "my_textarea_setting",
        array
        (
            "default"   =>  "",
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        "my_textarea_control",
        array
        (
            "section"   => "my_section",
            "settings"  => "my_textarea_setting",
            "label"     => "複数行テキスト",
            "type"      => "textarea"
        )
    );
typeをtextareaにすると複数行の入力が可能になります。

チェックボックス
    // チェックボックス
    $wp_customize->add_setting
    (
        "my_checkbox_setting",
        array
        (
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        "my_checkbox_control",
        array
        (
            "section"   =>  "my_section",
            "settings"  =>  "my_checkbox_setting",
            "label"     =>  "チェックボックス",
            "type"      =>  "checkbox"
        )
    );
typeをcheckboxにします。

ラジオボタン
    // ラジオボタン
    $wp_customize->add_setting
    (
        "my_radio_setting",
        array
        (
            "default"   =>  "value1",
            "priority"  =>  1000
        )
    );
    
    $wp_customize->add_control
    (
        "my_radio_control_radio",
        array
        (
            "section"   =>  "my_section",
            "settings"  =>  "my_radio_setting",
            "label"     =>  "ラジオボタン",
            "type"      =>  "radio",
            "choices"   =>
            array
            (
                "value1"    =>  "選択肢1",
                "value2"    =>  "選択肢2",
                "value3"    =>  "選択肢3"
            )
        )
    );    
typeをradioします。
また、defaultでvalue1を選択した状態にしています。

セレクトボックス
    // セレクトボックス
    $wp_customize->add_setting
    (
        "my_select_setting",
        array
        (
            "default"   =>  "value1",
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        "my_select_control",
        array
        (
            "section"   =>  "my_section",
            "settings"  =>  "my_select_setting",
            "label"     =>  "セレクトボックス",
            "type"      =>  "select",
            "choices"   =>  array
            (
                "value1"    =>  "選択肢1",
                "value2"    =>  "選択肢2",
                "value3"    =>  "選択肢3"
            )
        )
    );
typeにselectにしvalue1を選択した状態にします。

固定ページロドップダウン
    // 固定ページドロップダウン
    $wp_customize->add_setting
    (
        "my_dropdown_setting",
        array
        (
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        "my_dropdown_control",
        array
        (
            "section"   =>  "my_section",
            "settings"  =>  "my_dropdown_setting",
            "label"     =>  "固定ページ",
            "type"      =>  "dropdown-pages"
        )
    );
typeをdropdown-pagesにします。

画像アップロード
    //  画像アップロード
    $wp_customize->add_setting
    (
        "my__image_setting",
        array
        (
            "default"   =>  "",
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        new WP_Customize_Image_Control
        (
            $wp_customize,
            "my__image_Control",
            array
            (
                "section"   =>  "my_section",
                "settings"  =>  "my_image_setting",
                "label"     =>  "画像アップロード"
            )
        )
    );
WP_Customize_Image_Controlを使用します。

コード全体
//  ************************************************************************
// カスタマイザーにオリジナル項目追加
//  *************************************************************************
function my_customizer( $wp_customize )
{
    $wp_customize->add_section
    (
        "my_section",
        array
        (
            "title"     =>  "任意の項目名",
            "priority"  =>  200
        )
    );
    // 1行のテキスト
    $wp_customize->add_setting
    (
        "my_text_setting",
        array
        (
            "default"   =>  "",
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        $name,
        array
        (
            "section"   =>  "my_section",
            "settings"  =>  "my_text_setting",
            "label"     =>  "1行のテキスト",
            "type"      =>  "text"
        )
    );
    // 複数行テキスト
    $wp_customize->add_setting
    (
        "my_textarea_setting",
        array
        (
            "default"   =>  "",
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        "my_textarea_control",
        array
        (
            "section"   => "my_section",
            "settings"  => "my_textarea_setting",
            "label"     => "複数行テキスト",
            "type"      => "textarea"
        )
    );
    // チェックボックス
    $wp_customize->add_setting
    (
        "my_checkbox_setting",
        array
        (
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        "my_checkbox_control",
        array
        (
            "section"   =>  "my_section",
            "settings"  =>  "my_checkbox_setting",
            "label"     =>  "チェックボックス",
            "type"      =>  "checkbox"
        )
    );
    // ラジオボタン
    $wp_customize->add_setting
    (
        "my_radio_setting",
        array
        (
            "default"   =>  "value1",
            "priority"  =>  1000
        )
    );
    
    $wp_customize->add_control
    (
        "my_radio_control_radio",
        array
        (
            "section"   =>  "my_section",
            "settings"  =>  "my_radio_setting",
            "label"     =>  "ラジオボタン",
            "type"      =>  "radio",
            "choices"   =>
            array
            (
                "value1"    =>  "選択肢1",
                "value2"    =>  "選択肢2",
                "value3"    =>  "選択肢3"
            )
        )
    );
    // セレクトボックス
    $wp_customize->add_setting
    (
        "my_select_setting",
        array
        (
            "default"   =>  "value1",
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        "my_select_control",
        array
        (
            "section"   =>  "my_section",
            "settings"  =>  "my_select_setting",
            "label"     =>  "セレクトボックス",
            "type"      =>  "select",
            "choices"   =>  array
            (
                "value1"    =>  "選択肢1",
                "value2"    =>  "選択肢2",
                "value3"    =>  "選択肢3"
            )
        )
    );
    // 固定ページドロップダウン
    $wp_customize->add_setting
    (
        "my_dropdown_setting",
        array
        (
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        "my_dropdown_control",
        array
        (
            "section"   =>  "my_section",
            "settings"  =>  "my_dropdown_setting",
            "label"     =>  "固定ページ",
            "type"      =>  "dropdown-pages"
        )
    );
    //  画像アップロード
    $wp_customize->add_setting
    (
        "my__image_setting",
        array
        (
            "default"   =>  "",
            "priority"  =>  1000
        )
    );
    $wp_customize->add_control
    (
        new WP_Customize_Image_Control
        (
            $wp_customize,
            "my__image_Control",
            array
            (
                "section"   =>  "my_section",
                "settings"  =>  "my_image_setting",
                "label"     =>  "画像アップロード"
            )
        )
    );
}
add_action("customize_register","my_customizer");
カスタマイザー全体を表示

設定値の読み出し
<?php   echo    get_theme_mod("add_settingのID", "初期値"); ?>
又は
<?php   $変数   =   get_theme_mod("add_settingのID", "初期値"); ?>
まとめ
add_sectionでカスタマイザーにオリジナル項目を追加します。
add_settingとadd_controlのセットで追加したセクションの項目を追加します。
add_controlのsectionとsettingでadd_sectionとadd_settingに紐づけします。
ここでは都合により簡素化した最低限のコード(動作します)ですが、sanitize_callbackを設定する事を推奨します。
sanitize_callbackの使用方法は検索すれば直ぐに見つかります。
  
  
  
  

コメント