$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])
. '';
$tabs_content[$last_section] .= '