get_setting( 'blogname' )->transport = 'postMessage';
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
$wp_customize->get_setting( 'background_color' )->transport = 'postMessage';
$wp_customize->add_panel(
'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' => 10,
)
)
);
$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' => 10,
)
)
);
$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_menu_text_color',
array(
'sanitize_callback' => 'sanitize_hex_color',
'default' => '#cfcfcf',
)
);
$wp_customize->add_control(
new WP_Customize_Color_Control(
$wp_customize,
'deejay_menu_text_color',
array(
'label' => __( 'Top Navigation Bar Text Color', 'deejay' ),
'section' => 'colors',
'settings' => 'deejay_menu_text_color',
)
)
);
$wp_customize->add_setting(
'deejay_footer_text_color',
array(
'sanitize_callback' => 'sanitize_hex_color',
'default' => '#aeaeae',
)
);
$wp_customize->add_control(
new WP_Customize_Color_Control(
$wp_customize,
'deejay_footer_text_color',
array(
'label' => __( 'Footer Text Color', 'deejay' ),
'section' => 'colors',
'settings' => 'deejay_footer_text_color',
)
)
);
$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_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_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,
)
);
}
$wp_customize->add_setting(
'deejay_dark_mode',
array(
'sanitize_callback' => 'deejay_sanitize_checkbox',
)
);
$wp_customize->add_control(
'deejay_dark_mode',
array(
'type' => 'checkbox',
'label' => __( 'Check this box to enable dark mode in the editor.', 'deejay' ),
'section' => 'colors',
'priority' => 1,
)
);
/* Header */
require get_template_directory() . '/inc/customizer-header-nav.php';
/* Footer */
require get_template_directory() . '/inc/customizer-footer.php';
/* Blog */
require get_template_directory() . '/inc/customizer-blog-archive.php';
}
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 );
}