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 ); } } /** * Sanitizes the layout setting * * Ensures only array keys matching the original settings specified in add_control() are valid * * @since 1.0.3 */ if ( ! function_exists( 'blogk3_sanitize_layout' ) ) { function blogk3_sanitize_layout( $input ) { $valid = array( 'right' => 'Right', 'left' => 'Left', ); if ( array_key_exists( $input, $valid ) ) { return $input; } else { return ''; } } } /** * Checkbox sanitization callback. * * Sanitization callback for 'checkbox' type controls. This callback sanitizes `$checked` * as a boolean value, either TRUE or FALSE. * * @param bool $checked Whether the checkbox is checked. * @return bool Whether the checkbox is checked. * @since 1.5.0 */ function blogk3_sanitize_checkbox( $checked ) { return (bool) $checked; } /** * Layout classes * Adds 'right-sidebar' and 'left-sidebar' classes to the body tag * @param array $classes current body classes * @return string[] modified body classes * @since 1.0.0 */ function blogk3_layout_class( $classes ) { $layout = get_theme_mod( 'blogk3_layout' ); if ( '' == $layout ) { if ( is_rtl() ) { $layout = 'left'; } else { $layout = 'right'; } } $classes[] = $layout . '-sidebar'; return $classes; } /** * Adjust a hex color brightness * Allows us to create hover styles for custom link colors * @param strong $hex hex color e.g. #111111 * @param integer $steps factor by which to brighten/darken ranging from -255 (darken) to 255 (brighten) * @return string brightened/darkened hex color * @since 1.0.0 */ function blogk3_adjust_color_brightness( $hex, $steps ) { // Steps should be between -255 and 255. Negative = darker, positive = lighter $steps = max( -255, min( 255, $steps ) ); // Format the hex color string $hex = str_replace( '#', '', $hex ); if ( 3 == strlen( $hex ) ) { $hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 ); } // Get decimal values $r = hexdec( substr( $hex, 0, 2 ) ); $g = hexdec( substr( $hex, 2, 2 ) ); $b = hexdec( substr( $hex, 4, 2 ) ); // Adjust number of steps and keep it inside 0 to 255 $r = max( 0, min( 255, $r + $steps ) ); $g = max( 0, min( 255, $g + $steps ) ); $b = max( 0, min( 255, $b + $steps ) ); $r_hex = str_pad( dechex( $r ), 2, '0', STR_PAD_LEFT ); $g_hex = str_pad( dechex( $g ), 2, '0', STR_PAD_LEFT ); $b_hex = str_pad( dechex( $b ), 2, '0', STR_PAD_LEFT ); return '#' . $r_hex . $g_hex . $b_hex; } /** * Add CSS for custom controls * * This function incorporates CSS from the Kirki Customizer Framework * * The Kirki Customizer Framework, Copyright Aristeides Stathopoulos (@aristath), * is licensed under the terms of the GNU GPL, Version 2 (or later) * * @link https://github.com/reduxframework/kirki/ * @since 1.5.0 */ function blogk3_customizer_custom_control_css() { ?>