WordPress 3.4 以前は、テーマにオプション設定をする場合は、テーマの設定ページが必要でしたが、現在は、そのようなページがなくてもオプション項目を設定できますというお話です。
カスタマイザーにメニューを追加
functions.php
add_action ('admin_menu', 'themedemo_admin'); function themedemo_admin() { // add the Customize link to the admin menu add_theme_page( 'Customize', 'Customize', 'edit_theme_options', 'customize.php' ); }
カスタマイザーにフィールドの追加
functions.php
add_action('customize_register', 'themedemo_customize'); function themedemo_customize($wp_customize) { $wp_customize->add_section( 'themedemo_demo_settings', array( 'title'=> 'Demonstration Stuff', 'priority' => 35, ) ); $wp_customize->add_setting( 'some_setting', array( 'default' => 'default_value', ) ); $wp_customize->add_control( 'some_setting', array( 'label' => 'Text Setting', 'section'=> 'themedemo_demo_settings', 'type' => 'text', ) ); $wp_customize->add_setting( 'some_other_setting', array( 'default' => '#000000', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'some_other_setting', array( 'label' => 'Color Setting', 'section'=> 'themedemo_demo_settings', 'settings' => 'some_other_setting', ) ) ); }
templateファイルでの使い方
ex index.php
<?php get_header(); ?> <h3>テーマカスタマイザ デモ, テーマオプションページの要らない theme_mod の使い方</h3> <strong>ワイルドだろぉ</strong> <pre> <?php echo 'some_setting=> ' .get_theme_mod( 'some_setting', 'default_value' )."\n"; echo 'some_other_setting=> ' .get_theme_mod( 'some_other_setting', '#000000' )."\n"; echo 'non_existent_setting=> '.get_theme_mod( 'non_existent_setting', 'default_value' )."\n"; ?> </pre> <?php get_footer(); ?>
Theme Customizer Part Deux: Getting rid of Options pages: http://t.co/0jpgsQul
— Otto's posts (@ottodestruct) July 28, 2012