$v) { if (isset($v['std'])) { $value = asia_garden_get_theme_option_std($k, $v['std']); if (!$reset) { if (isset($_GET[$k])) $value = wp_kses_data(wp_unslash($_GET[$k])); else { $tmp = get_theme_mod($k, -987654321); if ($tmp != -987654321) $value = $tmp; } } asia_garden_storage_set_array2('options', $k, 'val', $value); if ($reset) remove_theme_mod($k); } } if ($reset) { // Unset reset flag set_theme_mod('reset_options', 0); // Regenerate CSS with default colors and fonts asia_garden_customizer_save_css(); } else { do_action('asia_garden_action_load_options'); } } } // Override options with stored page/post meta if ( !function_exists('asia_garden_override_theme_options') ) { add_action( 'wp', 'asia_garden_override_theme_options', 1 ); function asia_garden_override_theme_options($query=null) { if (is_page_template('blog.php')) { asia_garden_storage_set('blog_archive', true); asia_garden_storage_set('blog_template', get_the_ID()); } asia_garden_storage_set('blog_mode', asia_garden_detect_blog_mode()); if (is_singular()) { asia_garden_storage_set('options_meta', get_post_meta(get_the_ID(), 'asia_garden_options', true)); } } } // Return 'std' value of the option, processed by special function (if specified) if (!function_exists('asia_garden_get_theme_option_std')) { function asia_garden_get_theme_option_std($opt_name, $opt_std) { if (strpos($opt_std, '$asia_garden_')!==false) { $func = substr($opt_std, 1); if (function_exists($func)) { $opt_std = $func($opt_name); } } return $opt_std; } } // Return customizable option value if (!function_exists('asia_garden_get_theme_option')) { function asia_garden_get_theme_option($name, $defa='', $strict_mode=false, $post_id=0) { $rez = $defa; $from_post_meta = false; if ($post_id > 0) { if (!asia_garden_storage_isset('post_options_meta', $post_id)) asia_garden_storage_set_array('post_options_meta', $post_id, get_post_meta($post_id, 'asia_garden_options', true)); if (asia_garden_storage_isset('post_options_meta', $post_id, $name)) { $tmp = asia_garden_storage_get_array('post_options_meta', $post_id, $name); if (!asia_garden_is_inherit($tmp)) { $rez = $tmp; $from_post_meta = true; } } } if (!$from_post_meta && asia_garden_storage_isset('options')) { $blog_mode = asia_garden_storage_get('blog_mode'); if ( !asia_garden_storage_isset('options', $name) && (empty($blog_mode) || !asia_garden_storage_isset('options', $name.'_'.$blog_mode)) ) { $rez = $tmp = '_not_exists_'; if (function_exists('trx_addons_get_option')) $rez = trx_addons_get_option($name, $tmp, false); if ($rez === $tmp) { if ($strict_mode) { $s = debug_backtrace(); //array_shift($s); $s = array_shift($s); // Translators: Add option's name to the output echo '
' . esc_html(sprintf(__('Undefined option "%s" called from:', 'asia-garden'), $name));
						if (function_exists('dco')) dco($s);
						else print_r($s);
						echo '
'; die(); } else $rez = $defa; } } else { // Override option from GET or POST for current blog mode if (!empty($blog_mode) && isset($_REQUEST[$name . '_' . $blog_mode])) { $rez = wp_kses_data(wp_unslash($_REQUEST[$name . '_' . $blog_mode])); // Override option from GET } else if (isset($_REQUEST[$name])) { $rez = wp_kses_data(wp_unslash($_REQUEST[$name])); // Override option from current page settings (if exists) } else if (asia_garden_storage_isset('options_meta', $name) && !asia_garden_is_inherit(asia_garden_storage_get_array('options_meta', $name))) { $rez = asia_garden_storage_get_array('options_meta', $name); // Override option from current blog mode settings: 'home', 'search', 'page', 'post', 'blog', etc. (if exists) } else if (!empty($blog_mode) && asia_garden_storage_isset('options', $name . '_' . $blog_mode, 'val') && !asia_garden_is_inherit(asia_garden_storage_get_array('options', $name . '_' . $blog_mode, 'val'))) { $rez = asia_garden_storage_get_array('options', $name . '_' . $blog_mode, 'val'); // Get saved option value } else if (asia_garden_storage_isset('options', $name, 'val')) { $rez = asia_garden_storage_get_array('options', $name, 'val'); // Get ThemeREX Addons option value } else if (function_exists('trx_addons_get_option')) { $rez = trx_addons_get_option($name, $defa, false); } } } return $rez; } } // Check if customizable option exists if (!function_exists('asia_garden_check_theme_option')) { function asia_garden_check_theme_option($name) { return asia_garden_storage_isset('options', $name); } } // Return customizable option value, stored in the posts meta if (!function_exists('asia_garden_get_theme_option_from_meta')) { function asia_garden_get_theme_option_from_meta($name, $defa='') { $rez = $defa; if (asia_garden_storage_isset('options_meta')) { if (asia_garden_storage_isset('options_meta', $name)) $rez = asia_garden_storage_get_array('options_meta', $name); else $rez = 'inherit'; } return $rez; } } // Get dependencies list from the Theme Options if ( !function_exists('asia_garden_get_theme_dependencies') ) { function asia_garden_get_theme_dependencies() { $options = asia_garden_storage_get('options'); $depends = array(); foreach ($options as $k=>$v) { if (isset($v['dependency'])) $depends[$k] = $v['dependency']; } return $depends; } } // ----------------------------------------------------------------- // -- Theme Settings utilities // ----------------------------------------------------------------- // Return internal theme setting value if (!function_exists('asia_garden_get_theme_setting')) { function asia_garden_get_theme_setting($name) { if ( !asia_garden_storage_isset('settings', $name) ) { $s = debug_backtrace(); //array_shift($s); $s = array_shift($s); // Translators: Add setting's name to the output echo '
' . esc_html(sprintf(__('Undefined setting "%s" called from:', 'asia-garden'), $name));
			if (function_exists('dco')) dco($s);
			else print_r($s);
			echo '
'; die(); } else return asia_garden_storage_get_array('settings', $name); } } // Set theme setting if ( !function_exists( 'asia_garden_set_theme_setting' ) ) { function asia_garden_set_theme_setting($option_name, $value) { if (asia_garden_storage_isset('settings', $option_name)) asia_garden_storage_set_array('settings', $option_name, $value); } } // ----------------------------------------------------------------- // -- Color Schemes utilities // ----------------------------------------------------------------- // Load saved values into color schemes if (!function_exists('asia_garden_load_schemes')) { add_action('asia_garden_action_load_options', 'asia_garden_load_schemes'); function asia_garden_load_schemes() { $schemes = asia_garden_storage_get('schemes'); $storage = asia_garden_unserialize(asia_garden_get_theme_option('scheme_storage')); if (is_array($storage) && count($storage) > 0) { foreach ($storage as $k=>$v) { if (isset($schemes[$k])) { $schemes[$k] = $v; } } asia_garden_storage_set('schemes', $schemes); } } } // Return specified color from current (or specified) color scheme if ( !function_exists( 'asia_garden_get_scheme_color' ) ) { function asia_garden_get_scheme_color($color_name, $scheme = '') { if (empty($scheme)) $scheme = asia_garden_get_theme_option( 'color_scheme' ); if (empty($scheme) || asia_garden_storage_empty('schemes', $scheme)) $scheme = 'default'; $colors = asia_garden_storage_get_array('schemes', $scheme, 'colors'); return $colors[$color_name]; } } // Return colors from current color scheme if ( !function_exists( 'asia_garden_get_scheme_colors' ) ) { function asia_garden_get_scheme_colors($scheme = '') { if (empty($scheme)) $scheme = asia_garden_get_theme_option( 'color_scheme' ); if (empty($scheme) || asia_garden_storage_empty('schemes', $scheme)) $scheme = 'default'; return asia_garden_storage_get_array('schemes', $scheme, 'colors'); } } // Return colors from all schemes if ( !function_exists( 'asia_garden_get_scheme_storage' ) ) { function asia_garden_get_scheme_storage($scheme = '') { return serialize(asia_garden_storage_get('schemes')); } } // Return schemes list if ( !function_exists( 'asia_garden_get_list_schemes' ) ) { function asia_garden_get_list_schemes($prepend_inherit=false) { $list = array(); $schemes = asia_garden_storage_get('schemes'); if (is_array($schemes) && count($schemes) > 0) { foreach ($schemes as $slug => $scheme) { $list[$slug] = $scheme['title']; } } return $prepend_inherit ? asia_garden_array_merge(array('inherit' => esc_html__("Inherit", 'asia-garden')), $list) : $list; } } // ----------------------------------------------------------------- // -- Theme Fonts utilities // ----------------------------------------------------------------- // Load saved values into fonts list if (!function_exists('asia_garden_load_fonts')) { add_action('asia_garden_action_load_options', 'asia_garden_load_fonts'); function asia_garden_load_fonts() { // Fonts to load when theme starts $fonts = array(); for ($i=1; $i<=asia_garden_get_theme_setting('max_load_fonts'); $i++) { if (($name = asia_garden_get_theme_option("load_fonts-{$i}-name")) != '') { $fonts[] = array( 'name' => $name, 'family' => asia_garden_get_theme_option("load_fonts-{$i}-family"), 'styles' => asia_garden_get_theme_option("load_fonts-{$i}-styles") ); } } asia_garden_storage_set('load_fonts', $fonts); asia_garden_storage_set('load_fonts_subset', asia_garden_get_theme_option("load_fonts_subset")); // Font parameters of the main theme's elements $fonts = asia_garden_get_theme_fonts(); foreach ($fonts as $tag=>$v) { foreach ($v as $css_prop=>$css_value) { if (in_array($css_prop, array('title', 'description'))) continue; $fonts[$tag][$css_prop] = asia_garden_get_theme_option("{$tag}_{$css_prop}"); } } asia_garden_storage_set('theme_fonts', $fonts); } } // Return slug of the loaded font if (!function_exists('asia_garden_get_load_fonts_slug')) { function asia_garden_get_load_fonts_slug($name) { return str_replace(' ', '-', $name); } } // Return load fonts parameter's default value if (!function_exists('asia_garden_get_load_fonts_option')) { function asia_garden_get_load_fonts_option($option_name) { $rez = ''; $parts = explode('-', $option_name); $load_fonts = asia_garden_storage_get('load_fonts'); if ($parts[0] == 'load_fonts' && count($load_fonts) > $parts[1]-1 && isset($load_fonts[$parts[1]-1][$parts[2]])) { $rez = $load_fonts[$parts[1]-1][$parts[2]]; } return $rez; } } // Return load fonts subset's default value if (!function_exists('asia_garden_get_load_fonts_subset')) { function asia_garden_get_load_fonts_subset($option_name) { return asia_garden_storage_get('load_fonts_subset'); } } // Return load fonts list if (!function_exists('asia_garden_get_list_load_fonts')) { function asia_garden_get_list_load_fonts($prepend_inherit=false) { $list = array(); $load_fonts = asia_garden_storage_get('load_fonts'); if (is_array($load_fonts) && count($load_fonts) > 0) { foreach ($load_fonts as $font) { $list['"'.trim($font['name']).'"'.(!empty($font['family']) ? ','.trim($font['family']): '')] = $font['name']; } } return $prepend_inherit ? asia_garden_array_merge(array('inherit' => esc_html__("Inherit", 'asia-garden')), $list) : $list; } } // Return font settings of the theme specific elements if ( !function_exists( 'asia_garden_get_theme_fonts' ) ) { function asia_garden_get_theme_fonts() { return asia_garden_storage_get('theme_fonts'); } } // Return theme fonts parameter's default value if (!function_exists('asia_garden_get_theme_fonts_option')) { function asia_garden_get_theme_fonts_option($option_name) { $rez = ''; $parts = explode('_', $option_name); $theme_fonts = asia_garden_storage_get('theme_fonts'); if (!empty($theme_fonts[$parts[0]][$parts[1]])) { $rez = $theme_fonts[$parts[0]][$parts[1]]; } // For the font-families update options list also if ($parts[1] == 'font-family') { asia_garden_storage_set_array2('options', $option_name, 'options', asia_garden_get_list_load_fonts(true)); } return $rez; } } // ----------------------------------------------------------------- // -- Other options utilities // ----------------------------------------------------------------- // Return current theme-specific border radius for form's fields and buttons if ( !function_exists( 'asia_garden_get_border_radius' ) ) { function asia_garden_get_border_radius() { $rad = str_replace(' ', '', asia_garden_get_theme_option('border_radius')); if (empty($rad)) $rad = 0; return asia_garden_prepare_css_value($rad); } } // ----------------------------------------------------------------- // -- Theme Options page // ----------------------------------------------------------------- if ( !function_exists('asia_garden_options_init_page_builder') ) { add_action( 'after_setup_theme', 'asia_garden_options_init_page_builder' ); function asia_garden_options_init_page_builder() { if ( is_admin() ) { add_action('admin_enqueue_scripts', 'asia_garden_options_add_scripts'); } } } // Load required styles and scripts for admin mode if ( !function_exists( 'asia_garden_options_add_scripts' ) ) { //Handler of the add_action("admin_enqueue_scripts", 'asia_garden_options_add_scripts'); function asia_garden_options_add_scripts() { $screen = function_exists('get_current_screen') ? get_current_screen() : false; if (is_object($screen) && $screen->id == 'appearance_page_theme_options') { wp_enqueue_style( 'asia_garden-icons', asia_garden_get_file_url('css/font-icons/css/fontello-embedded.css') ); wp_enqueue_script( 'jquery-ui-tabs', false, array('jquery', 'jquery-ui-core'), null, true ); wp_enqueue_script( 'jquery-ui-accordion', false, array('jquery', 'jquery-ui-core'), null, true ); wp_enqueue_script( 'asia_garden-options', asia_garden_get_file_url('theme-options/theme.options.js'), array('jquery'), null, true ); wp_localize_script( 'asia_garden-options', 'asia_garden_dependencies', asia_garden_get_theme_dependencies() ); wp_localize_script( 'asia_garden-options', 'asia_garden_color_schemes', asia_garden_storage_get('schemes') ); wp_localize_script( 'asia_garden-options', 'asia_garden_simple_schemes', asia_garden_storage_get('schemes_simple') ); } } } // Add Theme Options item in the Appearance menu if (!function_exists('asia_garden_options_add_menu_items')) { add_action( 'admin_menu', 'asia_garden_options_add_menu_items' ); function asia_garden_options_add_menu_items() { add_theme_page( esc_html__('Theme Options', 'asia-garden'), //page_title esc_html__('Theme Options', 'asia-garden'), //menu_title 'manage_options', //capability 'theme_options', //menu_slug 'asia_garden_options_page_builder', //callback 'dashicons-admin-generic', //icon '' //menu position ); } } // Build options page if (!function_exists('asia_garden_options_page_builder')) { function asia_garden_options_page_builder() { ?>

$v) { // New tab if ($v['type']=='panel' || ($v['type']=='section' && empty($last_panel))) { if (!isset($tabs_titles[$k])) { $tabs_titles[$k] = $v['title']; $tabs_content[$k] = ''; } if (!empty($last_group)) { $tabs_content[$last_section] .= ''; $last_group = ''; } $last_section = $k; if ($v['type']=='panel') $last_panel = $k; // New group } else if ($v['type']=='group' || ($v['type']=='section' && !empty($last_panel))) { if (empty($last_group)) $tabs_content[$last_section] = (!isset($tabs_content[$last_section]) ? '' : $tabs_content[$last_section]) . '
'; else $tabs_content[$last_section] .= '
'; $tabs_content[$last_section] .= '

' . esc_html($v['title']) . '

' . '
'; $last_group = $k; // End panel, section or group } else if (in_array($v['type'], array('group_end', 'section_end', 'panel_end'))) { if (!empty($last_group) && ($v['type'] != 'section_end' || empty($last_panel))) { $tabs_content[$last_section] .= '
'; $last_group = ''; } if ($v['type'] == 'panel_end') $last_panel = ''; // Field's layout } else { $tabs_content[$last_section] = (!isset($tabs_content[$last_section]) ? '' : $tabs_content[$last_section]) . asia_garden_options_show_field($k, $v); } } if (!empty($last_group)) { $tabs_content[$last_section] .= ''; } if (count($tabs_content) > 0) { // Remove empty sections foreach ($tabs_content as $k=>$v) { if (empty($v)) { unset($tabs_titles[$k]); unset($tabs_content[$k]); } } ?>
1) { ?> $v) { $cnt++; ?>
' : '') . '
' . '

' . esc_html($field['title']) . ($inherit_allow ? '' : '') . '

' . ($field_data_present ? '
' . '
' : ''); // Type 'checkbox' if ($field['type']=='checkbox') { $output .= ''; // Type 'switch' (2 choises) or 'radio' (3+ choises) } else if (in_array($field['type'], array('switch', 'radio'))) { $field['options'] = apply_filters('asia_garden_filter_options_get_list_choises', $field['options'], $name); $first = true; foreach ($field['options'] as $k=>$v) { $output .= ''; $first = false; } // Type 'text' or 'time' or 'date' } else if (in_array($field['type'], array('text', 'time', 'date'))) { $output .= ''; // Type 'textarea' } else if ($field['type']=='textarea') { $output .= ''; // Type 'select' } else if ($field['type']=='select') { $field['options'] = apply_filters('asia_garden_filter_options_get_list_choises', $field['options'], $name); $output .= ''; // Type 'image', 'media', 'video' or 'audio' } else if (in_array($field['type'], array('image', 'media', 'video', 'audio'))) { $output .= (!empty($field['multiple']) ? '' : '') . asia_garden_show_custom_field('asia_garden_options_field_'.esc_attr($name).'_button', array( 'type' => 'mediamanager', 'multiple' => !empty($field['multiple']), 'data_type' => $field['type'], 'linked_field_id'=> 'asia_garden_options_field_'.esc_attr($name) ), asia_garden_is_inherit($field['val']) ? '' : $field['val']); // Type 'icon' } else if ($field['type']=='icon') { $output .= '' . asia_garden_show_custom_field('asia_garden_options_field_'.esc_attr($name).'_button', array( 'type' => 'icons', 'button' => true, 'icons' => true ), $field['val']); // Type 'checklist' } else if ($field['type']=='checklist') { $output .= '' . asia_garden_show_custom_field('asia_garden_options_field_'.esc_attr($name).'_list', array( 'type' => 'checklist', 'options' => $field['options'], 'sortable' => !empty($field['sortable']), 'dir' => !empty($field['dir']) ? $field['dir'] : 'horizontal' ), $field['val']); // Type 'scheme_editor' } else if ($field['type']=='scheme_editor') { $output .= '' . asia_garden_show_custom_field('asia_garden_options_field_'.esc_attr($name).'_scheme', array('type' => 'scheme_editor'), asia_garden_unserialize($field['val'])); } $output .= ($inherit_allow ? '
' . '' . esc_html__('Inherit', 'asia-garden') . '' . '' . '
' : '') . ($field_data_present ? '
' : '') . (!empty($field['override']['desc']) || !empty($field['desc']) ? '
' . (!empty($field['override']['desc']) // param 'desc' already processed with wp_kses()! ? $field['override']['desc'] : $field['desc']) . '
' : '') . ($field_data_present ? '
' : '') . '
'; return $output; } } // Show theme specific fields function asia_garden_show_custom_field($id, $field, $value) { $output = ''; switch ($field['type']) { case 'mediamanager': wp_enqueue_media( ); $title = empty($field['data_type']) || $field['data_type']=='image' ? esc_html__( 'Choose Image', 'asia-garden') : esc_html__( 'Choose Media', 'asia-garden'); $output .= '' . (!empty($field['multiple']) ? (empty($field['data_type']) || $field['data_type']=='image' ? esc_html__( 'Add Images', 'asia-garden') : esc_html__( 'Add Files', 'asia-garden') ) : esc_html($title) ) . ''; $output .= ''; $images = explode('|', $value); if (is_array($images)) { foreach ($images as $img) $output .= $img && !asia_garden_is_inherit($img) ? '' . (in_array(asia_garden_get_file_ext($img), array('gif', 'jpg', 'jpeg', 'png')) ? '' : '' . esc_html(basename($img)) . '' ) . '' : ''; } $output .= ''; break; case 'icons': $icons_type = !empty($field['style']) ? $field['style'] : asia_garden_get_theme_setting('icons_type'); if (empty($field['return'])) $field['return'] = 'full'; $asia_garden_icons = $icons_type=='images' ? asia_garden_get_list_images() : asia_garden_array_from_list(asia_garden_get_list_icons()); if (is_array($asia_garden_icons)) { if (!empty($field['button'])) $output .= ''; if (!empty($field['icons'])) { $output .= '
'; foreach($asia_garden_icons as $slug=>$icon) { $output .= ''; } $output .= '
'; } } break; case 'checklist': if (!empty($field['sortable'])) wp_enqueue_script('jquery-ui-sortable', false, array('jquery', 'jquery-ui-core'), null, true); $output .= '
'; if (!is_array($value)) { if (!empty($value) && !asia_garden_is_inherit($value)) parse_str(str_replace('|', '&', $value), $value); else $value = array(); } // Sort options by values order if (!empty($field['sortable']) && is_array($value)) { $field['options'] = asia_garden_array_merge($value, $field['options']); } foreach ($field['options'] as $k=>$v) { $output .= ''; } $output .= '
'; break; case 'scheme_editor': if (!is_array($value)) break; $output .= '
'; // Select scheme $output .= ''; // Select type $output .= '
' . '
' . '' . esc_html__('Editor type', 'asia-garden') . '' . '' .'' . '' . '' . '
' . '
'; // Colors $groups = asia_garden_storage_get('scheme_color_groups'); $colors = asia_garden_storage_get('scheme_color_names'); $output .= '
'; foreach ($value as $scheme=>$v) { $output .= '
' . ''; foreach ($groups as $group_name=>$group_data) { $output .= '' . esc_html($group_data['title']) . ''; } $output .= '
'; foreach ($colors as $color_name=>$color_data) { $output .= '
' . '' . esc_html($color_data['title']) . ''; foreach ($groups as $group_name=>$group_data) { $slug = $group_name == 'main' ? $color_name : str_replace('text_', '', "{$group_name}_{$color_name}"); $output .= '' . (isset($v['colors'][$slug]) ? "" : '' ) . ''; } $output .= '
'; } break; } $output .= '
' . '
'; break; } return apply_filters('asia_garden_filter_show_custom_field', $output, $id, $field, $value); } // Save options if (!function_exists('asia_garden_options_save')) { add_action('after_setup_theme', 'asia_garden_options_save', 4); function asia_garden_options_save() { if (!isset($_REQUEST['page']) || $_REQUEST['page']!='theme_options' || asia_garden_get_value_gp('asia_garden_nonce')=='') return; // verify nonce if ( !wp_verify_nonce( asia_garden_get_value_gp('asia_garden_nonce'), admin_url() ) ) { asia_garden_add_admin_message(esc_html__('Bad security code! Options are not saved!', 'asia-garden'), 'error', true); return; } // Check permissions if (!current_user_can('manage_options')) { asia_garden_add_admin_message(esc_html__('Manage options is denied for the current user! Options are not saved!', 'asia-garden'), 'error', true); return; } // Save options $options = asia_garden_storage_get('options'); $values = get_theme_mods(); $external_storages = array(); foreach ($options as $k=>$v) { // Skip non-data options - sections, info, etc. if (!isset($v['std'])) continue; // Get option value from POST $value = isset($_POST['asia_garden_options_field_' . $k]) ? asia_garden_get_value_gp('asia_garden_options_field_' . $k) : ($v['type']=='checkbox' ? 0 : ''); if ($value != asia_garden_get_theme_option_std($k, $v['std'])) $values[$k] = $value; else if (isset($values[$k])) unset($values[$k]); // External plugin's options if (!empty($v['options_storage'])) { if (!isset($external_storages[$v['options_storage']])) $external_storages[$v['options_storage']] = array(); $external_storages[$v['options_storage']][$k] = $value; } } // Update options in the external storages foreach ($external_storages as $storage_name => $storage_values) { $storage = get_option($storage_name, false); if (is_array($storage)) { foreach ($storage_values as $k=>$v) $storage[$k] = $v; update_option($storage_name, $storage); } } // Update Theme Mods (internal Theme Options) $stylesheet_slug = get_option('stylesheet'); update_option("theme_mods_{$stylesheet_slug}", $values); // Store new schemes colors if (!empty($values['scheme_storage'])) { $schemes = asia_garden_unserialize($values['scheme_storage']); if (is_array($schemes) && count($schemes) > 0) asia_garden_storage_set('schemes', $schemes); } // Store new fonts parameters $fonts = asia_garden_get_theme_fonts(); foreach ($fonts as $tag=>$v) { foreach ($v as $css_prop=>$css_value) { if (in_array($css_prop, array('title', 'description'))) continue; if (isset($values["{$tag}_{$css_prop}"])) $fonts[$tag][$css_prop] = $values["{$tag}_{$css_prop}"]; } } asia_garden_storage_set('theme_fonts', $fonts); // Update ThemeOptions save timestamp $stylesheet_time = time(); update_option("asia_garden_options_timestamp_{$stylesheet_slug}", $stylesheet_time); // Sinchronize theme options between child and parent themes if (asia_garden_get_theme_setting('duplicate_options') == 'both') { $theme_slug = get_option('template'); if ($theme_slug != $stylesheet_slug) { asia_garden_customizer_duplicate_theme_options($stylesheet_slug, $theme_slug, $stylesheet_time); } } // Regenerate CSS with new colors asia_garden_customizer_save_css(); // Return result asia_garden_add_admin_message(esc_html__('Options are saved', 'asia-garden')); if (!empty($_SERVER['HTTP_REFERER'])) { wp_redirect(wp_unslash($_SERVER['HTTP_REFERER'])); exit(); } } } // Refresh data in the linked field // according the main field value if (!function_exists('asia_garden_refresh_linked_data')) { function asia_garden_refresh_linked_data($value, $linked_name) { if ($linked_name == 'parent_cat') { $tax = asia_garden_get_post_type_taxonomy($value); $terms = !empty($tax) ? asia_garden_get_list_terms(false, $tax) : array(); $terms = asia_garden_array_merge(array(0 => esc_html__('- Select category -', 'asia-garden')), $terms); asia_garden_storage_set_array2('options', $linked_name, 'options', $terms); } } } // AJAX: Refresh data in the linked fields if (!function_exists('asia_garden_callback_get_linked_data')) { add_action('wp_ajax_asia_garden_get_linked_data', 'asia_garden_callback_get_linked_data'); add_action('wp_ajax_nopriv_asia_garden_get_linked_data','asia_garden_callback_get_linked_data'); function asia_garden_callback_get_linked_data() { if ( !wp_verify_nonce( asia_garden_get_value_gp('nonce'), admin_url('admin-ajax.php') ) ) die(); $chg_name = wp_kses_data(wp_unslash($_REQUEST['chg_name'])); $chg_value = wp_kses_data(wp_unslash($_REQUEST['chg_value'])); $response = array('error' => ''); if ($chg_name == 'post_type') { $tax = asia_garden_get_post_type_taxonomy($chg_value); $terms = !empty($tax) ? asia_garden_get_list_terms(false, $tax) : array(); $response['list'] = asia_garden_array_merge(array(0 => esc_html__('- Select category -', 'asia-garden')), $terms); } echo json_encode($response); die(); } } ?>