下記のコードをWordPress テーマカスタマイズAPI と、カスタマイザCSSをhead
に出力するためのいくつかのテーマで見ました。うまく機能しますが、header_textcolor
、background_color
、またはlink_textcolor
に値が指定されていない場合、デフォルト値を表示するように変更できるかどうか疑問に思います。
public static function header_output() {
?>
<!--Customizer CSS-->
<style type="text/css">
<?php self::generate_css('#site-title a', 'color', 'header_textcolor', '#'); ?>
<?php self::generate_css('body', 'background-color', 'background_color', '#'); ?>
<?php self::generate_css('a', 'color', 'link_textcolor'); ?>
</style>
<!--/Customizer CSS-->
<?php
}
public static function generate_css( $selector, $style, $mod_name, $prefix='', $postfix='', $echo=true ) {
$return = '';
$mod = get_theme_mod($mod_name);
if ( ! empty( $mod ) ) {
$return = sprintf('%s { %s:%s; }',
$selector,
$style,
$prefix.$mod.$postfix
);
if ( $echo ) {
echo $return;
}
}
return $return;
}
get_theme_mod()
にデフォルト値を設定するには、これを2番目の引数として渡すことができます。
$mod = get_theme_mod( 'header_textcolor', '#000000' );
#000000
に値が保存されていない場合はheader_textcolor
を出力します。
あなたのget_theme_mod()
呼び出しは他の関数generate_css()
から設定を取得しているので、あなたはデフォルトをも送るためにその関数を更新する必要があるでしょう:
public static function generate_css( $selector, $style, $mod_name, $default, $prefix='', $postfix='', $echo=true ) {
$return = '';
$mod = get_theme_mod( $mod_name, $default );
その例では$mod_name
の後に追加しました。
その後、デフォルト値を含むようにheader_output()
関数を更新します。
public static function header_output() {
?>
<!--Customizer CSS-->
<style type="text/css">
<?php self::generate_css('#site-title a', 'color', 'header_textcolor', '#000000', '#'); ?>
<?php self::generate_css('body', 'background-color', 'background_color', '#FFFFFF', '#'); ?>
<?php self::generate_css('a', 'color', 'link_textcolor', '#0000FF' ); ?>
</style>
<!--/Customizer CSS-->
<?php
}
これらの色にはデフォルト値があります。
ただし、テーマのmodに値が設定されていないと、コードがCSSを出力しないことを指摘しておく価値があると思います。これはデフォルトのスタイルがあなたのスタイルシートから来ることを意味します。だから私はここでデフォルト値を持つことが必要かどうかわからない。