wp_blog/wp-content/themes/worldwide-v1-01/include/theme-customizer.php
2020-01-02 23:15:16 +07:00

134 lines
6.1 KiB
PHP

<?php
/*
* Goodlayers Theme Customizer File
* ---------------------------------------------------------------------
* Add the ability to support the color for theme customization
* ---------------------------------------------------------------------
*/
add_action( 'customize_register', 'themename_customize_register' );
function themename_customize_register($wp_customize) {
global $goodlayers_element, $goodlayers_menu;
$color_priority = 0;
$color_menus = $goodlayers_menu[ __('Elements Color', 'gdl_back_office') ];
foreach( $color_menus as $color_menu_name => $color_menu_slug ){
// add the section of the elements color menu to theme customization
$wp_customize->add_section( $color_menu_slug, array('title' => __('Color : ', 'gdl_back_office') . $color_menu_name, 'priority' => 1000 ) );
// add each color inside
foreach( $goodlayers_element[$color_menu_slug] as $element_name => $element ){
if( !empty($element['name']) ){
$wp_customize->add_setting( $element['name'], array(
'default' => $element['default'],
'type' => 'option',
'capability' => 'edit_theme_options',
'transport' => 'postMessage'
));
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, $element['name'] . '_id', array(
'label' => $element_name,
'section' => $color_menu_slug,
'settings' => $element['name'],
'priority' => $color_priority
)));
$color_priority++;
}
}
}
// add the script of preview customization to the footer
if ( $wp_customize->is_preview() && ! is_admin() ){
add_action( 'wp_footer', 'gdl_customize_preview', 21);
}
save_option(THEME_SHORT_NAME . '_stylesheet_generated', '', 'No');
}
function gdl_customize_preview() {
global $goodlayers_element, $goodlayers_menu;
echo '<script type="text/javascript">' . "\n";
echo '(function($){' . "\n";
echo 'var cur_color;' . "\n";
echo 'var cur_bg_color;' . "\n";
$color_menus = $goodlayers_menu[ __('Elements Color', 'gdl_back_office') ];
foreach( $color_menus as $color_menu_name => $color_menu_slug ){
foreach( $goodlayers_element[$color_menu_slug] as $element ){
if( !empty($element['attr']) && !empty($element['selector']) ){
echo 'wp.customize("' . $element['name'] . '", function(value){';
echo 'value.bind(function(to){';
foreach($element['attr'] as $css_attr){
if( strpos($element['selector'], ':hover') > 0 ){
// if is hover
$cur_selector = str_replace(':hover', '', $element['selector']);
echo '$("' . $cur_selector . '").hover(function(){';
echo 'cur_color = $(this).css("color");';
echo 'cur_bg_color = $(this).css("background-color");';
echo '$(this).css("' . $css_attr . '", to);';
echo '}, function(){';
if( $css_attr == 'background-color' ){
echo '$(this).css("' . $css_attr . '", cur_bg_color);';
}else{
echo '$(this).css("' . $css_attr . '", cur_color);';
}
echo '});';
}else{
echo '$(\'' . $element['selector'] . '\').css("' . $css_attr . '", to);';
}
}
echo '});'; // value.bind
echo '});'; // wp.customize
echo "\n";
}
}
}
// contact / comment script
$temp_sel = 'div.contact-form-wrapper input[type="text"], div.contact-form-wrapper input[type="password"], div.contact-form-wrapper textarea, ';
$temp_sel = $temp_sel . 'div.sidebar-wrapper #search-text input[type="text"], ';
$temp_sel = $temp_sel . 'div.sidebar-wrapper .contact-widget input, div.custom-sidebar .contact-widget textarea, ';
$temp_sel = $temp_sel . 'div.comment-wrapper input[type="text"], div.comment-wrapper input[type="password"], div.comment-wrapper textarea';
?>
var cur_inner_shadow = '<?php echo get_option(THEME_SHORT_NAME.'_contact_form_inner_shadow', '#ececec'); ?>';
var cur_frame = '<?php echo get_option(THEME_SHORT_NAME.'_contact_form_frame_color', '#f7f7f7'); ?>';
wp.customize("<?php echo THEME_SHORT_NAME.'_contact_form_background_color'; ?>", function(value){value.bind(function(to){
$('<?php echo $temp_sel; ?>').css("background-color", to);
});});
wp.customize("<?php echo THEME_SHORT_NAME.'_contact_form_text_color'; ?>", function(value){value.bind(function(to){
$('<?php echo $temp_sel; ?>').css("color", to);
});});
wp.customize("<?php echo THEME_SHORT_NAME.'_contact_form_border_color'; ?>", function(value){value.bind(function(to){
$('<?php echo $temp_sel; ?>').css("border-color", to);
});});
wp.customize("<?php echo THEME_SHORT_NAME.'_contact_form_frame_color'; ?>", function(value){value.bind(function(to){
$('<?php echo $temp_sel; ?>').css("box-shadow", cur_inner_shadow + ' 0px 1px 4px inset, ' + to + ' -5px -5px 0px 0px, ' + to + ' 5px 5px 0px 0px, ' + to + ' 5px 0px 0px 0px, ' + to + ' 0px 5px 0px 0px, ' + to + ' 5px -5px 0px 0px, ' + to + ' -5px 5px 0px 0px');
$('<?php echo $temp_sel; ?>').css("-webkit-box-shadow", cur_inner_shadow + ' 0px 1px 4px inset, ' + to + ' -5px -5px 0px 0px, ' + to + ' 5px 5px 0px 0px, ' + to + ' 5px 0px 0px 0px, ' + to + ' 0px 5px 0px 0px, ' + to + ' 5px -5px 0px 0px, ' + to + ' -5px 5px 0px 0px');
cur_frame = to;
});});
wp.customize("<?php echo THEME_SHORT_NAME.'_contact_form_inner_shadow'; ?>", function(value){value.bind(function(to){
$('<?php echo $temp_sel; ?>').css("box-shadow", to + ' 0px 1px 4px inset, ' + cur_frame + ' -5px -5px 0px 0px, ' + cur_frame + ' 5px 5px 0px 0px, ' + cur_frame + ' 5px 0px 0px 0px, ' + cur_frame + ' 0px 5px 0px 0px, ' + cur_frame + ' 5px -5px 0px 0px, ' + cur_frame + ' -5px 5px 0px 0px');
$('<?php echo $temp_sel; ?>').css("-webkit-box-shadow", to + ' 0px 1px 4px inset, ' + cur_frame + ' -5px -5px 0px 0px, ' + cur_frame + ' 5px 5px 0px 0px, ' + cur_frame + ' 5px 0px 0px 0px, ' + cur_frame + ' 0px 5px 0px 0px, ' + cur_frame + ' 5px -5px 0px 0px, ' + cur_frame + ' -5px 5px 0px 0px');
cur_inner_shadow = to;
});});
<?php
echo '} )( jQuery );' . "\n";
echo '</script>';
}
add_action('init', 'is_custom_style_generated');
function is_custom_style_generated(){
if( get_option(THEME_SHORT_NAME . '_stylesheet_generated') == 'No' ){
gdl_generate_style_custom();
save_option(THEME_SHORT_NAME . '_stylesheet_generated', 'No', '');
}
}
?>