WordPressのテーマカスタマイザーに独自の項目を追加する方法

WordPressのテーマカスタマイザーに独自の項目を追加する方法

WordPressのテーマカスタマイザーに独自の項目を追加する方法

WordPressのテーマカスタマイザーに独自の項目を追加する方法をご紹介いたします。

テーマカスタマイザーで以下のようなことを実現する方法を解説しています。

  • チェックボックスの有無で出力を制御
  • カラーピッカーでメインカラーを変更
  • 入力したテキストをテーマ内に出力
  • 選択した画像をテーマ内に出力

WordPressのテーマカスタマイザーに独自の項目を追加する方法

出力の有無を選択するチェックボックスを追加

テーマ内にコンテンツを表示するかどうか、テーマカスタマイザー内で選択できるようにする方法を解説します。

テーマカスタマイザーに独自項目を追加するには、「セクション」「セッティング」「コントロール」を設定してあげる必要があります。functions.phpに以下のようなコードを追加することで、独自の項目を追加します。

function customize_register_onoff( $wp_customize ) {
  $wp_customize->add_section( 'onoff_scheme', array(
    'title' => '表示・非表示',
    'priority' => 200,
  ));
  $wp_customize->add_setting( 'headnav[originCheckbox]', array(
    'default' => true,
    'type' => 'option',
    'transport' => 'refresh',
  ));
  $wp_customize->add_control( 'headnav_origin_checkbox', array(
    'settings' => 'headnav[originCheckbox]',
    'label' => 'ヘッダーナビを表示する',
    'section' => 'onoff_scheme',
    'type' => 'checkbox',
  ));
}
add_action( 'customize_register', 'customize_register_onoff' );

まず「$wp_customize->add_section」で新しいセクションを追加しています。「title」にはラベル、「priority」には優先度を入れます。この時点で、テーマカスタマイザーに独自の項目が表示されます。

テーマカスタマイザーに独自項目追加

続いて、「$wp_customize->add_setting」で項目のセッティングをします。「headnav」の部分がセッティング名で、任意の名前で構いません。セッティング名の後ろに [originCheckbox] を付けます。

「default」ではデフォルト値(今回の場合はチェックボックスがオン)を指定します。「type」は基本’option’で良いです。「transport」では、テーマカスタマイザーの設定値を変えた時にリアルタイムでプレビューに反映するかどうかを設定します。’refresh’だとリアルタイムで反映、’postMessage’だと保存後に反映されます。

最後に、「$wp_customize->add_control」でコントロールを設定します。コントロール名は「headnav_origin_checkbox」とします。「settings」にはセッティング名、「label」ではチェックボックスのラベルを設定します。「section」には表示するセクションの名前、「type」ではフォーム種類を指定します。

「セクション」「セッティング」「コントロール」が設定できたら、追加したセクション内に独自のチェックボックスが表示されます。

独自チェックボックスの表示

テーマ内で追加した独自のチェックボックスで条件分岐するには、以下のように記述します。


<?php $options = get_option('headnav'); if ( $options['originCheckbox'] ): ?>
  チェックが入っている場合の出力内容
<?php endif; ?>

追加した項目にチェックが入っている場合のみ、コンテンツを出力することが可能です。

メインカラーを変更するカラーピッカーを追加

カラーピッカーを追加して、メインカラーを変更する方法を解説いたします。

通常、テーマカスタマイザーに任意の項目を追加するには、「セクション」「セッティング」「コントロール」を設定してあげる必要がありますが、デフォルトで「色(colors)」というセクションが用意されているため、今回はこの「色」セクションに独自の項目を追加しています。

他にデフォルトで用意されているセクションは、以下の通りです。詳しくはテーマカスタマイズAPIをご参照ください。

  • title_tagline(サイトタイトルとキャッチフレーズ)
  • header_image(ヘッダー画像)
  • background_image(背景画像)
  • nav(ナビゲーション)
  • static_front_page(固定フロントページ)

さて、テーマカスタマイザーにカラーピッカーを追加するには、functions.phpに以下のようなコードを追加します。


//テーマカスタマイザーにカラーピッカーを追加
function theme_customizer_extension($wp_customize) {
  $wp_customize->add_setting( 'main_color', array(
    'default' => '#e50012', //デフォルト値
    'sanitize_callback' => 'sanitize_hex_color' //サニタイズ
  ) );
  $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'main_color_custom', array(
    'label' => 'メインカラー', //ラベル
    'section' => 'colors', //セクション名
    'settings' => 'main_color', //セッティング名
    'priority' => 200, //優先度
  )));
}
add_action('customize_register', 'theme_customizer_extension');

//カラーピッカーで選択された色をheadに出力
function customizer_main_color() {
$main_color = get_theme_mod( 'main_color', '#e50012');
?>
<style>
.main-color {
  background: <?php echo $main_color; ?>;
}
</style>
<?php
}
add_action( 'wp_head', 'customizer_main_color');

セッティングやコントロールの設定については、上述した方法と同じです。WP_Customize_Color_Controlでカラーピッカーを追加しています。

カラーピッカーで選択された色をCSSとして出力することで、「.main-color」の背景色を変更しています。CSSで背景色に指定しているだけなので、文字色やボーダーなどにも使用できます。

上記コードを追加すると、「色」セクション内にカラーピッカーが追加されます。

カラーピッカーの追加

独自のテキストボックスを追加

独自のテキストボックスを追加するには、functions.phpに以下のように記述します。


function theme_customizer_add_txt( $wp_customize ) {
  $wp_customize->add_section( 'original_txt_section', array(
    'title' => 'オリジナルテキスト',
    'priority' => 200,
  ));
  $wp_customize->add_setting('original_txt', array(
    'type' => 'option',
    'sanitize_callback' => 'sanitize_text_field'
  ));
  $wp_customize->add_control( 'original_txt', array(
    'settings' => 'original_txt',
    'label' => 'オリジナルテキスト',
    'section' => 'original_txt_section',
    'type' => 'text',
  ));
}
add_action( 'customize_register', 'theme_customizer_add_txt' );

上記コードを追加すると、以下のようにオリジナルテキストのボックスが追加されます。

テーマカスタマイザーにテキストボックスを追加

入力したテキストを出力するには、テーマ内に以下を記述します。

<?php echo get_option('original_txt'); ?>

セッティング名とコントロール名を別にした場合、「original_txt」の部分にはセッティング名を入れます。

独自の画像選択ボックスを追加

独自の画像選択ボックスを追加するには、functions.phpに以下を追加します。


function theme_customizer_add_img( $wp_customize ) {
  $wp_customize->add_section( 'original_img_section', array(
    'title' => 'オリジナル画像',
    'priority' => 200,
  ));
  $wp_customize->add_setting('original_image', array(
    'type' => 'option',
  ));
  $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, 'original_image', array(
    'settings' => 'original_image',
    'label' => 'オリジナル画像',
    'section' => 'original_img_section',
  )));
}
add_action( 'customize_register', 'theme_customizer_add_img' );

「WP_Customize_Image_Control」で画像選択を実装しています。

テーマカスタマイザーを開くと、オリジナル画像追加用のフィールドが追加されています。

オリジナル画像追加用のフィールド

画像を出力するには、テーマ内に以下コードを記述します。

<img src="<?php echo get_option('original_image')?>">

テキストボックスと同様に、セッティング名とコントロール名を別にした場合、「original_image」の部分にはセッティング名を入れます。

あとがき

テーマカスタマイザーに独自の項目を追加することで、管理画面上から色々なことができるようになりますね。

クライアントワークでも活用できるかと思います。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です