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の使用方法は検索すれば直ぐに見つかります。
コメント