From 527118bd2f900db11c8d89293add7404f2dc8908 Mon Sep 17 00:00:00 2001 From: IanDelMar <42134098+IanDelMar@users.noreply.github.com> Date: Thu, 7 Nov 2019 11:16:16 +0100 Subject: [PATCH] Add filter to theme default settings --- inc/theme-settings.php | 51 ++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 19 deletions(-) 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 ); + } +}