WordPressテーマのテーマカスタマイザーという機能の使い方を以前紹介していますが、標準のカラーピッカーでは透過色の設定が出来ませんでした
Celtis_sテーマを作成するときに透過色の指定が出来ないか調べていたら、既に GitHub で公開されている方がいましたので、テーマ作成者向けの内容となりますが、その使い方を紹介します
Alpha Color Picker Customizer Control
先ずは GitHub サイトからコードを取得します
今回はこの components/customizer/alpha-color-picker を使用しました
配置
このフォルダー内のファイルを celtis_s テーマ下の inc フォルダー内にコピーします
修正
alpha-color-picker.php ファイル内で行っているスクリプトとCSSの読み込み処理部分をコードの配置位置に応じて修正します
alpha-color-picker.js と alpha-color-picker.css の2箇所です
/** * Enqueue scripts and styles. * * Ideally these would get registered and given proper paths before this control object * gets initialized, then we could simply enqueue them here, but for completeness as a * stand alone class we'll register and enqueue them here. */ //celtis_s テーマに合わせてパスを修正 public function enqueue() { wp_enqueue_script( 'alpha-color-picker', get_stylesheet_directory_uri() . '/inc/alpha-color-picker/alpha-color-picker.js', array( 'jquery', 'wp-color-picker' ), '1.0.0', true ); wp_enqueue_style( 'alpha-color-picker', get_stylesheet_directory_uri() . '/inc/alpha-color-picker/alpha-color-picker.css', array( 'wp-color-picker' ), '1.0.0' ); }
これで最初の準備は終了です
カスタマイザーで使う
今回は celtis_s/inc/customizer.php ファイルでカスタマイザーの処理を行っているので、このファイル内で上記の alpha-color-picker.php を読み込めば使用できるようになります
require_once( dirname( __FILE__ ) . '/alpha-color-picker/alpha-color-picker.php' );
これで、Customize_Alpha_Color_Control クラスが使えるようになります
後は、通常のカラーピッカーで指定していた WP_Customize_Color_Control の new 部分を Customize_Alpha_Color_Control に書き換えてオプション指定で show_opacity を true に指定すればOKです
$wp_customize->add_setting( 'celtis_s_menu_color', array( 'default' => $cdefault['menu_color'], 'type' => 'theme_mod', 'sanitize_callback' => 'maybe_hash_hex_color') ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'celtis_s_menu_color', array( 'label' => __( 'メインメニュー文字色', 'celtis_s' ), 'section' => 'celtis_s_nav_color', 'settings' => 'celtis_s_menu_color', ) ) ); $wp_customize->add_setting( 'celtis_s_menu_bgcolor', array( 'default' => $cdefault['menu_bgcolor'], 'type' => 'theme_mod', 'sanitize_callback' => 'celtis_s_sanitize_rgba_color') ); $wp_customize->add_control( new Customize_Alpha_Color_Control( $wp_customize, 'celtis_s_menu_bgcolor', array( 'label' => __( 'メインメニュー背景色', 'celtis_s' ), 'section' => 'celtis_s_nav_color', 'settings' => 'celtis_s_menu_bgcolor', 'show_opacity' => true, ) ) );
それともう一点、サニタイズ処理が rgba 用に変える必要があります
rgba データのWordpress標準のサニタイズ関数が見当たらなかったので下記のようなコードで対応しました
rgba サニタイズ関数
//rgba カラー サニタイズ function celtis_s_sanitize_rgba_color( $color ) { if ( '' === $color ) return ''; if ( false === strpos( $color, 'rgba' )){ $color = maybe_hash_hex_color( $color ); return $color; } else { $color = str_replace( ' ', '', $color ); sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha ); return 'rgba('.$red.','.$green.','.$blue.','.$alpha.')'; } }
これでテーマカスタマイザーから透過色付きのカラーピッカーが利用できるようになります
簡単にカラーピッカーを透過色付きに置き換えることが出来ました
後は、これで設定した rgba データをCSSへ反映させる必要がありますが、その辺りの処理は通常のカラーピッカーを使った場合と同等です
先に紹介した WordPress テーマカスタマイザーの使い方 等を参照して下さい
以上
テーマカスタマイザーでアルファカラーピッカーを使って透過色をセットする方法を簡単に紹介いたしました