' . __( 'Add Custom HTML', 'astra-addon' ) . ''; } return html_entity_decode( $custom_html, ENT_COMPAT, 'UTF-8' ); } /** * Advanced Header Custom Menu Outside/Inside * * @param string|boolean $value display menu outside or not. * @return string|boolean */ public function header_display_outside_menu( $value ) { $custom_menu_item = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'custom-menu-item' ); if ( ! ( self::advanced_header_enabled() ) || ( is_front_page() && 'posts' == get_option( 'show_on_front' ) ) || 'default' == $custom_menu_item || '' == $custom_menu_item ) { return $value; } $display_outside = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'custom-menu-item-outside' ); return $display_outside; } /** * Advanced Header Custom Menu Item * * @param string $value Custom Menu Item. * @return string */ public function header_custom_menu_item( $value ) { $custom_menu_item = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'custom-menu-item' ); if ( ! ( self::advanced_header_enabled() ) || ( is_front_page() && 'posts' == get_option( 'show_on_front' ) ) || 'default' == $custom_menu_item || '' == $custom_menu_item ) { return $value; } return $custom_menu_item; } /** * Remove Post Featured Image If advanced headers is enable with featured image as background image * * @param boolean $is_featured Markup of featured image. * @return boolean $is_featured */ public function remove_post_thumbnail( $is_featured ) { if ( self::advanced_header_enabled() ) { if ( ! ( is_archive() || is_home() || is_search() || is_404() || wp_doing_ajax() ) ) { $page_post_featured = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'page-post-featured' ); $advanced_headers_layout = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'layout' ); // If selected Post / Page Featured image. if ( 'disable' != $advanced_headers_layout && 'enabled' == $page_post_featured ) { $is_featured = false; } } } return $is_featured; } /** * Add cutom Logo for Advanced Headers * * @param string $html Markup of custom logo. * @param string $blog_id blog id. * @return strung $html updated Markup of Custom Logo. */ public function add_custom_logo( $html, $blog_id ) { $advanced_headers_merged = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'merged' ); $advanced_headers_inherit_logo = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'diff-header-logo' ); if ( ! $advanced_headers_merged || ( is_front_page() && 'posts' == get_option( 'show_on_front' ) ) || 'enabled' != $advanced_headers_inherit_logo ) { return $html; } $custom_logo_id = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'logo-id' ); // Site logo. if ( $custom_logo_id ) { add_filter( 'astra_main_header_retina', '__return_false' ); add_filter( 'wp_get_attachment_image_attributes', array( $this, 'adv_replace_header_logo_attr' ), 10, 3 ); // Custom Site logo. $html = sprintf( '', esc_url( home_url( '/' ) ), wp_get_attachment_image( $custom_logo_id, 'ast-adv-header-logo-size', false, array( 'class' => 'custom-logo', ) ), astra_attr( 'site-title-custom-link', array( 'class' => '', ) ) ); remove_filter( 'wp_get_attachment_image_attributes', array( $this, 'adv_replace_header_logo_attr' ) ); } return $html; } /** * Replace header logo. * * @param array $attr Image. * @param object $attachment Image obj. * @param sting $size Size name. * * @return array Image attr. */ public function adv_replace_header_logo_attr( $attr, $attachment, $size ) { $custom_logo_id = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'logo-id' ); if ( $custom_logo_id == $attachment->ID ) { $attach_data = array(); $attach_data = wp_get_attachment_image_src( $attachment->ID, 'ast-adv-header-logo-size' ); if ( isset( $attach_data[0] ) ) { $attr['src'] = $attach_data[0]; } $file_type = wp_check_filetype( $attr['src'] ); $file_extension = $file_type['ext']; if ( 'svg' == $file_extension ) { $attr['width'] = '100%'; $attr['height'] = '100%'; $attr['class'] = 'astra-logo-svg'; } $diff_retina_logo = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'diff-header-retina-logo' ); if ( 'enabled' === $diff_retina_logo ) { $custom_logo = $attr['src']; $retina_logo = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'retina-logo-url' ); $attr['srcset'] = ''; if ( '' !== $retina_logo ) { if ( astra_check_is_ie() ) { // Replace header logo url to retina logo url. $attr['src'] = $retina_logo; } $attr['srcset'] = $custom_logo . ' 1x, ' . $retina_logo . ' 2x'; } } } return $attr; } /** * Remove Prefix : from Archive title * * @param string $title Default title. * @return string $title updated title. */ public function archive_title( $title ) { if ( is_category() ) { $title = single_cat_title( '', false ); } elseif ( is_tag() ) { $title = single_tag_title( '', false ); } elseif ( is_author() ) { // Added author details with hCard if schema is enabled. $title = ' '' ) ) . '>' . get_the_author() . ''; } elseif ( is_tax() ) { $title = single_term_title( '', false ); } return $title; } /** * Add Body Classes * * @param array $classes Body Class Array. * @return array */ public function body_classes( $classes ) { $advanced_headers_layout = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'layout' ); $transparent_header = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'merged' ); $custom_logo_id = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'logo-id' ); // Site logo. if ( $custom_logo_id && $transparent_header ) { $classes[] = 'ast-advanced-headers-different-logo'; } if ( $advanced_headers_layout ) { $classes[] = 'ast-advanced-headers'; } if ( 'enabled' == $transparent_header && 'disable' == $advanced_headers_layout ) { // Add class. $classes[] = 'ast-transparent-header'; } return $classes; } /** * Advanced Headers Bar markup loader if we are using merged with header * * @since 1.0.0 */ public function advanced_header_merged() { // Get our options. $advanced_headers_merged = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'merged' ); $advanced_header_bg_size = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'bg-size' ); $advanced_header_parallax_device = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'parallax-device' ); if ( ! self::advanced_header_enabled() || ( is_front_page() && 'posts' == get_option( 'show_on_front' ) ) ) { return; } if ( ! $advanced_headers_merged ) { return; } $combined = 'ast-merged-advanced-header ast-title-bar-wrap'; // Parallax variable. $parallax = ( 'none' !== $advanced_header_parallax_device ) ? ' ast-advanced-headers-parallax' : ''; // Parallax Device. $parallax_device = ( 'none' !== $advanced_header_parallax_device ) ? $advanced_header_parallax_device : ''; // Parallax speed variable. $parallax_speed = apply_filters( 'astra_advanced_header_parallax_speed', 2 ); // Full Screen vertical align center. $vertical_center = ' ast-advanced-headers-vertical-center'; // Full Screen. $full_screen = ( 'full-screen' == $advanced_header_bg_size ) ? ' ast-full-advanced-header' : ''; // Add advanced header wrapper classes. printf( '
', esc_attr( $combined ) . esc_attr( $parallax ) . esc_attr( $full_screen ) . esc_attr( $vertical_center ), ( ! empty( $parallax ) ) ? 'data-parallax-speed="' . esc_attr( $parallax_speed ) . '" data-parallax-device="' . esc_attr( $parallax_device ) . '"' : '', 'aria-label="' . esc_attr( $this->get_header_background_image_alt_text() ) . '"' ); } /** * Advanced Headers markup loader * * Loads appropriate template file based on the style option selected in options panel. * * @since 1.0.0 */ public function load_markup() { // Get our options. $advanced_headers_layout = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'layout' ); $advanced_headers_merged = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'merged' ); $advanced_header_bg_size = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'bg-size' ); $advanced_header_parallax_device = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'parallax-device' ); if ( ! self::advanced_header_enabled() || ( is_front_page() && 'posts' == get_option( 'show_on_front' ) ) ) { return; } if ( ! $advanced_headers_merged ) { $combined = 'ast-title-bar-wrap'; // Parallax variable. $parallax = ( 'none' !== $advanced_header_parallax_device ) ? ' ast-advanced-headers-parallax' : ''; // Parallax Device. $parallax_device = ( 'none' !== $advanced_header_parallax_device ) ? $advanced_header_parallax_device : ''; // Parallax speed variable. $parallax_speed = apply_filters( 'astra_advanced_header_parallax_speed', 2 ); // Full Screen vertical align center. $vertical_center = ' ast-advanced-headers-vertical-center'; // Full Screen. $full_screen = ( 'full-screen' == $advanced_header_bg_size ) ? ' ast-full-advanced-header' : ''; // Add advanced header wrapper classes. printf( '
', esc_attr( $combined ) . esc_attr( $parallax ) . esc_attr( $full_screen ) . esc_attr( $vertical_center ), ( ! empty( $parallax ) ) ? 'data-parallax-speed="' . esc_attr( $parallax_speed ) . '" data-parallax-device="' . esc_attr( $parallax_device ) . '"' : '', 'aria-label="' . esc_attr( $this->get_header_background_image_alt_text() ) . '"' ); } if ( $advanced_headers_layout && 'disable' !== $advanced_headers_layout ) { // Add markup. astra_addon_get_template( 'advanced-headers/template/' . $advanced_headers_layout . '.php' ); } echo '
'; // Page Header with no content is selected. if ( $advanced_headers_layout && 'disable' !== $advanced_headers_layout ) { add_filter( 'astra_the_title_enabled', '__return_false' ); if ( is_singular() && Astra_Addon_Update_Filter_Function::astra_addon_restrict_banner_area_with_page_header() ) { add_filter( 'astra_apply_hero_header_banner', '__return_false' ); // If page header is set then banner title area of layout-2 won't be visible. } } } /** * Custom Primary Menu * * If custom primary menu is selected. * * @param array $args menu arguments. * @return array $args menu arguments. */ public function custom_primary_menu( $args ) { $transparent_header = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'merged' ); if ( ! ( self::advanced_header_enabled() || $transparent_header ) || ( is_front_page() && 'posts' == get_option( 'show_on_front' ) ) ) { return $args; } $custom_menu = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_design_option( 'custom-menu' ); if ( ( '' != $custom_menu || 0 != $custom_menu ) && 'primary' == $args['theme_location'] ) { $args['menu'] = $custom_menu; } return $args; } /** * Next Breadcrumbs * * If yoast SEO breadcrumbs are active loads their function else loads custom breadcrumbs. * * @since 1.0.0 */ public static function advanced_headers_breadcrumbs_markup() { $show_breadcrumb = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'breadcrumb' ); if ( ! $show_breadcrumb ) { return; } $id = Astra_Ext_Advanced_Headers_Data::get_current_page_header_ids(); $breadcrumb_old_version = get_post_meta( $id, 'astra-breadcrumb-old', true ); if ( true === apply_filters( 'astra_addon_advanced_headers_use_astra_breadcrumb_trail', false ) || 'true' !== $breadcrumb_old_version ) { astra_get_breadcrumb(); } else { $wpseo_option = get_option( 'wpseo_internallinks' ); if ( function_exists( 'yoast_breadcrumb' ) && $wpseo_option && true === $wpseo_option['breadcrumbs-enable'] ) { yoast_breadcrumb( '' ); } else { astra_breadcrumb(); } } } /** * Add Styles */ public function add_scripts() { $advanced_headers_layout = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'layout' ); if ( ! self::advanced_header_enabled() || 'disable' == $advanced_headers_layout || ( is_front_page() && 'posts' == get_option( 'show_on_front' ) ) ) { return; } if ( SCRIPT_DEBUG ) { wp_enqueue_style( 'astra-advanced-headers-css', ASTRA_ADDON_EXT_ADVANCED_HEADERS_URL . 'assets/css/unminified/style.css', array(), ASTRA_EXT_VER ); wp_enqueue_style( 'astra-advanced-headers-layout-css', ASTRA_ADDON_EXT_ADVANCED_HEADERS_URL . 'assets/css/unminified/' . $advanced_headers_layout . '.css', array(), ASTRA_EXT_VER ); wp_enqueue_script( 'astra-advanced-headers-js', ASTRA_ADDON_EXT_ADVANCED_HEADERS_URL . 'assets/js/unminified/advanced-headers.js', array( 'jquery' ), ASTRA_EXT_VER, false ); } else { wp_enqueue_style( 'astra-advanced-headers-css', ASTRA_ADDON_EXT_ADVANCED_HEADERS_URL . 'assets/css/minified/style.min.css', array(), ASTRA_EXT_VER ); wp_enqueue_style( 'astra-advanced-headers-layout-css', ASTRA_ADDON_EXT_ADVANCED_HEADERS_URL . 'assets/css/minified/' . $advanced_headers_layout . '.min.css', array(), ASTRA_EXT_VER ); wp_enqueue_script( 'astra-advanced-headers-js', ASTRA_ADDON_EXT_ADVANCED_HEADERS_URL . 'assets/js/minified/advanced-headers.min.js', array( 'jquery' ), ASTRA_EXT_VER, false ); } } /** * Check transparent header is enabled or not */ public static function transparent_header_disabled_archive() { $force_transparent_header = Astra_Ext_Advanced_Headers_Loader::astra_advanced_headers_layout_option( 'force-transparent-disabled' ); if ( ! apply_filters( 'astra_transparent_header_disable', false ) && ! $force_transparent_header ) { return true; } return false; } /** * Check page header is enabled or not */ public static function advanced_header_enabled() { $ids = Astra_Ext_Advanced_Headers_Data::get_current_page_header_ids(); if ( false == $ids ) { return false; } return true; } /** * Add Meta Options * * @param array $meta_option Page Meta. * @return array */ public function add_options( $meta_option ) { $meta_option['adv-header-id-meta'] = array( 'sanitize' => 'FILTER_SANITIZE_STRING', 'default' => astra_get_option_meta( 'adv-header-id-meta' ), ); return $meta_option; } /** * Sticky Header Meta Field markup * * Loads appropriate template file based on the style option selected in options panel. * * @param array $meta Page Meta. * @since 1.0.0 */ public function add_options_markup( $meta ) { /** * Get options */ $header_id = ( isset( $meta['adv-header-id-meta']['default'] ) ) ? $meta['adv-header-id-meta']['default'] : ''; $header_options = Astra_Target_Rules_Fields::get_post_selection( 'astra_adv_header' ); $show_meta_field = ! astra_check_is_bb_themer_layout(); if ( empty( $header_options ) ) { $header_options = array( '' => __( 'No Page Headers Found', 'astra-addon' ), ); } ?>