get_setting( 'blogname' )->transport = 'postMessage'; $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; $wp_customize->get_setting( 'background_color' )->transport = 'postMessage'; $wp_customize->add_section( 'deejay_options', array( 'title' => __( 'Theme Options', 'deejay' ), 'priority' => 90, ) ); $wp_customize->get_control( 'header_textcolor' )->label = __( 'Site Title Color', 'deejay' ); $wp_customize->get_control( 'background_color' )->label = __( 'Body Background Color', 'deejay' ); $wp_customize->get_control( 'background_color' )->priority = 20; $wp_customize->get_section( 'header_image' )->description = __( 'Important:
The header on the front page is only as big as your header image. If your header image is too small, your header widgets will not show.

If you add a video, the image will be used as a fallback while the video loads.', 'deejay' ); $wp_customize->add_setting( 'deejay_description_textcolor', array( 'sanitize_callback' => 'sanitize_hex_color', 'default' => '#ffffff', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'deejay_description_textcolor', array( 'label' => __( 'Tagline Color', 'deejay' ), 'section' => 'colors', 'settings' => 'deejay_description_textcolor', 'priority' => 15, ) ) ); $wp_customize->add_setting( 'deejay_textcolor', array( 'sanitize_callback' => 'sanitize_hex_color', 'default' => null, ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'deejay_textcolor', array( 'label' => __( 'Body Text Color', 'deejay' ), 'section' => 'colors', 'settings' => 'deejay_textcolor', 'priority' => 15, ) ) ); $wp_customize->add_setting( 'deejay_accent_color', array( 'sanitize_callback' => 'sanitize_hex_color', 'default' => '#4ac6c9', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'deejay_accent_color', array( 'label' => __( 'Accent Color', 'deejay' ), 'section' => 'colors', 'settings' => 'deejay_accent_color', 'priority' => 15, ) ) ); $wp_customize->add_setting( 'deejay_link_underline_color', array( 'sanitize_callback' => 'sanitize_hex_color', 'default' => '#b902c4', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'deejay_link_underline_color', array( 'label' => __( 'Link Underline & Border Color', 'deejay' ), 'section' => 'colors', 'settings' => 'deejay_link_underline_color', 'priority' => 15, ) ) ); $wp_customize->add_setting( 'deejay_footer_bgcolor', array( 'sanitize_callback' => 'sanitize_hex_color', 'default' => '#111111', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'deejay_footer_bgcolor', array( 'label' => __( 'Footer Background Color', 'deejay' ), 'section' => 'colors', 'settings' => 'deejay_footer_bgcolor', 'priority' => 20, ) ) ); $wp_customize->add_setting( 'deejay_topbar_bgcolor', array( 'sanitize_callback' => 'sanitize_hex_color', 'default' => '#111111', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'deejay_topbar_bgcolor', array( 'label' => __( 'Top Navigation Bar Background Color', 'deejay' ), 'section' => 'colors', 'settings' => 'deejay_topbar_bgcolor', 'priority' => 15, ) ) ); $wp_customize->add_setting( 'deejay_header_bgcolor', array( 'sanitize_callback' => 'sanitize_hex_color', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'deejay_header_bgcolor', array( 'label' => __( 'Header Background Color ', 'deejay' ), 'description' => __( 'In case your front page header image does not fit on other pages, you can now select a color that will replace the header image on all pages except the front page. To reset the option, press the Clear button.', 'deejay' ), 'section' => 'colors', 'settings' => 'deejay_header_bgcolor', 'priority' => 100, ) ) ); $wp_customize->add_setting( 'deejay_header_widget_bgcolor', array( 'sanitize_callback' => 'sanitize_hex_color', 'default' => null, ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'deejay_header_widget_bgcolor', array( 'label' => __( 'Header Widget Background Color', 'deejay' ), 'section' => 'colors', 'settings' => 'deejay_header_widget_bgcolor', 'priority' => 20, ) ) ); $wp_customize->add_setting( 'deejay_advanced_header', array( 'sanitize_callback' => 'deejay_sanitize_checkbox', ) ); $wp_customize->add_control('deejay_advanced_header', array( 'type' => 'checkbox', 'label' => __( 'Check this box to activate the advanced header for mobile phones and tablets. Because the header image is smaller on mobile devices, the widgets will be displayed below the header image.', 'deejay' ), 'section' => 'deejay_options', ) ); $wp_customize->add_setting( 'deejay_postnav', array( 'sanitize_callback' => 'deejay_sanitize_checkbox', ) ); $wp_customize->add_control('deejay_postnav', array( 'type' => 'checkbox', 'label' => __( 'Check this box to display the next and previous post navigation for single posts and image attachments.', 'deejay' ), 'section' => 'deejay_options', ) ); $wp_customize->add_setting( 'deejay_hide_credits', array( 'sanitize_callback' => 'deejay_sanitize_checkbox', ) ); $wp_customize->add_control('deejay_hide_credits', array( 'type' => 'checkbox', 'label' => __( 'Check this box to hide the footer credit links. :(', 'deejay' ), 'section' => 'deejay_options', ) ); $wp_customize->add_setting( 'deejay_grid_size', array( 'sanitize_callback' => 'deejay_sanitize_select', 'default' => '3', ) ); $wp_customize->add_control('deejay_grid_size', array( 'type' => 'radio', 'label' => __( 'Grid Layout', 'deejay' ), 'description' => __( 'By default, posts are listed in a 3 column grid. You can change the number of columns here:', 'deejay' ), 'section' => 'deejay_options', 'choices' => array( '1' => __( '1', 'deejay' ), '2' => __( '2', 'deejay' ), '3' => __( '3 (Default)', 'deejay' ), ), ) ); $wp_customize->add_setting( 'deejay_menu_site_icon', array( 'sanitize_callback' => 'deejay_sanitize_checkbox', ) ); $wp_customize->add_control('deejay_menu_site_icon', array( 'type' => 'checkbox', 'label' => __( 'Check this box to display the site icon in the top navigation bar.', 'deejay' ), 'section' => 'title_tagline', 'priority' => 95, ) ); $wp_customize->add_section( 'deejay_crew', array( 'title' => __( 'Crew Template Settings', 'deejay' ), 'description' => __( 'This setting is specific for the Crew page template.

Select the crew members that you would like to feature at the top of the page.', 'deejay'), 'priority' => 95, ) ); // Create a list of users / crew members. $users = get_users(); $output = array(); foreach ( (array) $users as $user ) { $output[ $user->ID ] = $user->display_name; } for ( $i = 1; $i < 9; $i++ ) { $wp_customize->add_setting( 'deejay_crew_member' . $i, array( 'sanitize_callback' => 'deejay_sanitize_select', ) ); $wp_customize->add_control( 'deejay_crew_member' . $i, array( 'type' => 'select', 'label' => __( 'Crew member #','deejay' ) . $i, 'section' => 'deejay_crew', 'choices' => $output, ) ); } } add_action( 'customize_register', 'deejay_customize_register' ); /** * Binds JS handlers to make Theme Customizer preview reload changes asynchronously. */ function deejay_customize_preview_js() { wp_enqueue_script( 'deejay_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '20130508', true ); } add_action( 'customize_preview_init', 'deejay_customize_preview_js' ); /** * Checkbox sanitization callback, from https://github.com/WPTRT/code-examples/blob/master/customizer/sanitization-callbacks.php * * 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. */ function deejay_sanitize_checkbox( $checked ) { // Boolean check. return ( ( isset( $checked ) && true == $checked ) ? true : false ); } /** * Sanitization callback for 'select' and 'radio' type controls. This callback sanitizes `$input` * as a slug, and then validates `$input` against the choices defined for the control. * * @see sanitize_key() https://developer.wordpress.org/reference/functions/sanitize_key/ * @see $wp_customize->get_control() https://developer.wordpress.org/reference/classes/wp_customize_manager/get_control/ * * @param string $input Slug to sanitize. * @param WP_Customize_Setting $setting Setting instance. * @return string Sanitized slug if it is a valid choice; otherwise, the setting default. */ function deejay_sanitize_select( $input, $setting ) { // Ensure input is a slug. $input = sanitize_key( $input ); // Get list of choices from the control associated with the setting. $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 ); }