get_setting( 'blogname' )->transport = 'postMessage'; $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; $wp_customize->get_setting( 'background_color' )->transport = 'postMessage'; $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; /** * Theme Options Panel */ $wp_customize->add_panel( 'alkane_theme_options', array( 'title' => esc_html__( 'Theme Options', 'alkane' ), 'priority' => 1, ) ); /** * General Options Section */ $wp_customize->add_section( 'alkane_general_options', array ( 'title' => esc_html__( 'General Options', 'alkane' ), 'panel' => 'alkane_theme_options', 'priority' => 10, 'description' => esc_html__( 'Personalize the settings of your theme.', 'alkane' ), ) ); // Main Sidebar Position $wp_customize->add_setting ( 'alkane_sidebar_position', array ( 'default' => alkane_default( 'alkane_sidebar_position' ), 'sanitize_callback' => 'alkane_sanitize_select', ) ); $wp_customize->add_control ( 'alkane_sidebar_position', array ( 'label' => esc_html__( 'Main Sidebar Position (if active)', 'alkane' ), 'section' => 'alkane_general_options', 'priority' => 1, 'type' => 'select', 'choices' => array( 'right' => esc_html__( 'Right', 'alkane'), 'left' => esc_html__( 'Left', 'alkane'), ), ) ); /** * Footer Section */ $wp_customize->add_section( 'alkane_footer_options', array ( 'title' => esc_html__( 'Footer Options', 'alkane' ), 'panel' => 'alkane_theme_options', 'priority' => 20, 'description' => esc_html__( 'Personalize the footer settings of your theme.', 'alkane' ), ) ); // Copyright Control $wp_customize->add_setting ( 'alkane_copyright', array ( 'default' => alkane_default( 'alkane_copyright' ), 'transport' => 'postMessage', 'sanitize_callback' => 'wp_kses_post', ) ); $wp_customize->add_control ( 'alkane_copyright', array ( 'label' => esc_html__( 'Copyright', 'alkane' ), 'section' => 'alkane_footer_options', 'priority' => 1, 'type' => 'textarea', ) ); // Credit Control $wp_customize->add_setting ( 'alkane_credit', array ( 'default' => alkane_default( 'alkane_credit' ), 'transport' => 'postMessage', 'sanitize_callback' => 'alkane_sanitize_checkbox', ) ); $wp_customize->add_control ( 'alkane_credit', array ( 'label' => esc_html__( 'Display Designer Credit', 'alkane' ), 'section' => 'alkane_footer_options', 'priority' => 2, 'type' => 'checkbox', ) ); // Support Section $wp_customize->add_section( 'alkane_support_options', array( 'title' => esc_html__( 'Support Options', 'alkane' ), 'description' => esc_html__( 'Thanks for your interest in Alkane! If you have any questions or run into any trouble, please visit us the following links. We will get you fixed up!', 'alkane' ), 'panel' => 'alkane_theme_options', 'priority' => 30, ) ); // Theme Support $wp_customize->add_setting ( 'alkane_theme_support', array( 'default' => '', ) ); $wp_customize->add_control( new Alkane_Button_Control( $wp_customize, 'alkane_theme_support', array( 'label' => esc_html__( 'Alkane Support', 'alkane' ), 'section' => 'alkane_support_options', 'priority' => 1, 'type' => 'alkane-button', 'button_tag' => 'a', 'button_class' => 'button button-primary', 'button_href' => 'https://wpalkane.com/contact/', 'button_target' => '_blank', ) ) ); // Theme Review Section $wp_customize->add_section( 'alkane_review_options', array( 'title' => esc_html__( 'Enjoying the theme?', 'alkane' ), 'description' => esc_html__( 'Why not leave us a review on WordPress.org? We\'d really appreciate it!', 'alkane' ), 'panel' => 'alkane_theme_options', 'priority' => 40, ) ); // Theme $wp_customize->add_setting ( 'alkane_theme_review', array( 'default' => '', ) ); $wp_customize->add_control( new Alkane_Button_Control( $wp_customize, 'alkane_theme_review', array( 'label' => esc_html__( 'Review on WordPress.org', 'alkane' ), 'section' => 'alkane_review_options', 'type' => 'alkane-button', 'button_tag' => 'a', 'button_class' => 'button button-primary', 'button_href' => 'https://wordpress.org/support/theme/alkane/reviews', 'button_target' => '_blank', ) ) ); } add_action( 'customize_register', 'alkane_customize_register' ); /** * Button Control Class */ if ( class_exists( 'WP_Customize_Control' ) ) { class Alkane_Button_Control extends WP_Customize_Control { /** * @access public * @var string */ public $type = 'alkane-button'; /** * HTML tag to render button object. * * @var string */ protected $button_tag = 'button'; /** * Class to render button object. * * @var string */ protected $button_class = 'button button-primary'; /** * Link for based button. * * @var string */ protected $button_href = 'javascript:void(0)'; /** * Target for based button. * * @var string */ protected $button_target = ''; /** * Click event handler. * * @var string */ protected $button_onclick = ''; /** * ID attribute for HTML tab. * * @var string */ protected $button_tag_id = ''; /** * Render the control's content. */ public function render_content() { ?> button_tag ); // button class if ( ! empty( $this->button_class ) ) { echo ' class="' . esc_attr( $this->button_class ) . '"'; } // button or href if ( 'button' == $this->button_tag ) { echo ' type="button"'; } else { echo ' href="' . esc_url( $this->button_href ) . '"' . ( empty( $this->button_tag ) ? '' : ' target="' . esc_attr( $this->button_target ) . '"' ); } // onClick Event if ( ! empty( $this->button_onclick ) ) { echo ' onclick="' . esc_js( $this->button_onclick ) . '"'; } // ID if ( ! empty( $this->button_tag_id ) ) { echo ' id="' . esc_attr( $this->button_tag_id ) . '"'; } echo '>'; // Print text inside tag echo esc_html( $this->label ); // Print close tag echo 'button_tag ) . '>'; ?> 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 ); } /** * Sanitize the checkbox. * * @param bool $checked Whether the checkbox is checked. * @return bool Whether the checkbox is checked. */ function alkane_sanitize_checkbox( $checked ) { return ( ( isset( $checked ) && true === $checked ) ? true : false ); } /** * Binds JS handlers to make Theme Customizer preview reload changes asynchronously. */ function alkane_customize_preview_js() { wp_enqueue_script( 'alkane_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '20140120', true ); } add_action( 'customize_preview_init', 'alkane_customize_preview_js' );