diff --git a/inc/customizer.php b/inc/customizer.php index 4d5ef1f..740e180 100644 --- a/inc/customizer.php +++ b/inc/customizer.php @@ -42,7 +42,7 @@ if ( ! function_exists( 'understrap_theme_customize_register' ) ) { 'title' => __( 'Theme Layout Settings', 'understrap' ), 'capability' => 'edit_theme_options', 'description' => __( 'Container width and sidebar defaults', 'understrap' ), - 'priority' => 160, + 'priority' => apply_filters( 'understrap_theme_layout_options_priority', 160 ), ) ); @@ -61,8 +61,8 @@ if ( ! function_exists( 'understrap_theme_customize_register' ) ) { // Get the list of possible select options. $choices = $setting->manager->get_control( $setting->id )->choices; - // If the input is a valid key, return it; otherwise, return the default. - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); + // If the input is a valid key, return it; otherwise, return the default. + return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); } @@ -90,7 +90,7 @@ if ( ! function_exists( 'understrap_theme_customize_register' ) ) { 'container' => __( 'Fixed width container', 'understrap' ), 'container-fluid' => __( 'Full width container', 'understrap' ), ), - 'priority' => '10', + 'priority' => apply_filters( 'understrap_container_type_priority', 10 ), ) ) ); @@ -125,7 +125,7 @@ if ( ! function_exists( 'understrap_theme_customize_register' ) ) { 'both' => __( 'Left & Right sidebars', 'understrap' ), 'none' => __( 'No sidebar', 'understrap' ), ), - 'priority' => '20', + 'priority' => apply_filters( 'understrap_sidebar_position_priority', 20 ), ) ) ); diff --git a/inc/theme-settings.php b/inc/theme-settings.php index d67fb58..9a83356 100755 --- a/inc/theme-settings.php +++ b/inc/theme-settings.php @@ -9,26 +9,39 @@ defined( 'ABSPATH' ) || exit; if ( ! function_exists( 'understrap_setup_theme_default_settings' ) ) { + /** + * Store default theme settings in database. + */ function understrap_setup_theme_default_settings() { - - // check if settings are set, if not set defaults. - // Caution: DO NOT check existence using === always check with == . - // Latest blog posts style. - $understrap_posts_index_style = get_theme_mod( 'understrap_posts_index_style' ); - if ( '' == $understrap_posts_index_style ) { - set_theme_mod( 'understrap_posts_index_style', 'default' ); - } - - // Sidebar position. - $understrap_sidebar_position = get_theme_mod( 'understrap_sidebar_position' ); - if ( '' == $understrap_sidebar_position ) { - set_theme_mod( 'understrap_sidebar_position', 'right' ); - } - - // Container width. - $understrap_container_type = get_theme_mod( 'understrap_container_type' ); - if ( '' == $understrap_container_type ) { - set_theme_mod( 'understrap_container_type', 'container' ); + $defaults = understrap_get_theme_default_settings(); + $settings = get_theme_mods(); + foreach ( $defaults as $setting_id => $default_value ) { + // Check if setting is set, if not set it to its default value. + if ( ! isset( $settings[ $setting_id ] ) ) { + set_theme_mod( $setting_id, $default_value ); + } } } } + +if ( ! function_exists( 'understrap_get_theme_default_settings' ) ) { + /** + * Retrieve default theme settings. + * + * @return array + */ + function understrap_get_theme_default_settings() { + $defaults = array( + 'understrap_posts_index_style' => 'default', // Latest blog posts style. + 'understrap_sidebar_position' => 'right', // Sidebar position. + 'understrap_container_type' => 'container', // Container width. + ); + + /** + * Filters the default theme settings. + * + * @param array $defaults Array of default theme settings. + */ + return apply_filters( 'understrap_theme_default_settings', $defaults ); + } +}