register_types(); $this->add_main_panels(); $this->maybe_add_partial_refresh_to_blog_description(); } /** * Register customizer controls type. */ private function register_types() { $this->register_type( 'Hestia_Hiding_Section', 'section' ); $this->register_type( 'Hestia_Customizer_Range_Value_Control', 'control' ); $this->register_type( 'Hestia_Customizer_Heading', 'control' ); $this->register_type( 'Hestia_Select_Multiple', 'control' ); $this->register_type( 'Hestia_PageBuilder_Button', 'control' ); $this->register_type( 'Hestia_Customize_Control_Radio_Image', 'control' ); $this->register_type( 'Hestia_Customize_Control_Tabs', 'control' ); $this->register_type( 'Hestia_Customizer_Dimensions', 'control' ); $this->register_type( 'Hestia_Select_Hiding', 'control' ); } /** * Add main panels. */ private function add_main_panels() { $this->add_panel( new Hestia_Customizer_Panel( 'hestia_appearance_settings', array( 'priority' => 25, 'title' => esc_html__( 'Appearance Settings', 'hestia' ), ) ) ); $this->add_panel( new Hestia_Customizer_Panel( 'hestia_frontpage_sections', array( 'priority' => 30, 'title' => esc_html__( 'Frontpage Sections', 'hestia' ), 'active_callback' => array( $this, 'hestia_display_frontpage_section' ), ) ) ); $this->add_panel( new Hestia_Customizer_Panel( 'hestia_blog_settings', array( 'priority' => 45, 'title' => esc_html__( 'Blog Settings', 'hestia' ), ) ) ); $this->add_control( new Hestia_Customizer_Control( 'hestia_link_header_background', array( 'sanitize_callback' => 'sanitize_text_field', ), array( 'priority' => 25, 'container_class' => 'quick-links', 'button_text' => __( 'Header Background', 'hestia' ), 'is_button' => false, 'focus_type' => 'section', 'focus' => 'header_image', 'shortcut' => true, 'section' => 'background_image', 'button_class' => 'button', ), 'Hestia_Button' ) ); } /** * Add selective refresh to blog description if that's the case. */ private function maybe_add_partial_refresh_to_blog_description() { if ( ! 'posts' === get_option( 'show_on_front' ) ) { return; } $this->add_partial( new Hestia_Customizer_Partial( 'blogdescription', array( 'selector' => '.home.blog .page-header .hestia-title', 'render_callback' => array( $this, 'blog_description_callback' ), ) ) ); } /** * Change controls. * * @return void */ public function change_controls() { $this->change_customizer_object( 'section', 'header_image', 'panel', 'hestia_appearance_settings' ); $this->change_customizer_object( 'section', 'header_image', 'description', __return_empty_string() ); $this->change_customizer_object( 'section', 'background_image', 'panel', 'hestia_appearance_settings' ); $this->change_customizer_object( 'setting', 'blogdescription', 'transport', $this->selective_refresh ); $this->change_customizer_object( 'section', 'colors', 'panel', 'hestia_appearance_settings' ); } /** * Blog description callback function */ public function blog_description_callback() { bloginfo( 'description' ); } /** * Checks if the front-page sections should be displayed or not. * Small tweak for Customizer when some filers are not aware of update theme_mods yet. * * @return bool */ function hestia_display_frontpage_section() { if ( ! empty( $_REQUEST['customized'] ) ) { $customized = json_decode( wp_unslash( $_REQUEST['customized'] ), true ); if ( is_array( $customized ) && isset( $customized['disable_frontpage_sections'] ) ) { return ! (bool) $customized['disable_frontpage_sections']; } } return ! (bool) get_theme_mod( 'disable_frontpage_sections' ); } }