From 9d4123cee1867ee7199b06bdc92d40611f547ecc Mon Sep 17 00:00:00 2001 From: Zach van Rijn Date: Wed, 21 Jul 2021 14:54:07 -0500 Subject: Initial unmodified import from Astra (Version: 3.6.5) @ /wp-content/themes/astra/. --- inc/markup-extras.php | 1593 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1593 insertions(+) create mode 100644 inc/markup-extras.php (limited to 'inc/markup-extras.php') diff --git a/inc/markup-extras.php b/inc/markup-extras.php new file mode 100644 index 0000000..ab911cc --- /dev/null +++ b/inc/markup-extras.php @@ -0,0 +1,1593 @@ +' . "\n", esc_url( get_bloginfo( 'pingback_url' ) ) ); + } +} + +/** + * Schema for tag. + */ +if ( ! function_exists( 'astra_schema_body' ) ) : + + /** + * Adds schema tags to the body classes. + * + * @since 1.0.0 + */ + function astra_schema_body() { + + if ( true !== apply_filters( 'astra_schema_enabled', true ) ) { + return; + } + + // Check conditions. + $is_blog = ( is_home() || is_archive() || is_attachment() || is_tax() || is_single() ) ? true : false; + + // Set up default itemtype. + $itemtype = 'WebPage'; + + // Get itemtype for the blog. + $itemtype = ( $is_blog ) ? 'Blog' : $itemtype; + + // Get itemtype for search results. + $itemtype = ( is_search() ) ? 'SearchResultsPage' : $itemtype; + // Get the result. + $result = apply_filters( 'astra_schema_body_itemtype', $itemtype ); + + // Return our HTML. + echo apply_filters( 'astra_schema_body', "itemtype='https://schema.org/" . esc_attr( $result ) . "' itemscope='itemscope'" ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } +endif; + +/** + * Adds custom classes to the array of body classes. + */ +if ( ! function_exists( 'astra_body_classes' ) ) { + + /** + * Adds custom classes to the array of body classes. + * + * @since 1.0.0 + * @param array $classes Classes for the body element. + * @return array + */ + function astra_body_classes( $classes ) { + + if ( wp_is_mobile() ) { + $classes[] = 'ast-header-break-point'; + } else { + $classes[] = 'ast-desktop'; + } + + if ( astra_is_amp_endpoint() ) { + $classes[] = 'ast-amp'; + } + + // Apply separate container class to the body. + $content_layout = astra_get_content_layout(); + if ( 'content-boxed-container' == $content_layout ) { + $classes[] = 'ast-separate-container'; + } elseif ( 'boxed-container' == $content_layout ) { + $classes[] = 'ast-separate-container ast-two-container'; + } elseif ( 'page-builder' == $content_layout ) { + $classes[] = 'ast-page-builder-template'; + } elseif ( 'plain-container' == $content_layout ) { + $classes[] = 'ast-plain-container'; + } + // Sidebar location. + $page_layout = 'ast-' . astra_page_layout(); + $classes[] = esc_attr( $page_layout ); + + // Current Astra verion. + $classes[] = esc_attr( 'astra-' . ASTRA_THEME_VERSION ); + + $menu_item = astra_get_option( 'header-main-rt-section' ); + $outside_menu = astra_get_option( 'header-display-outside-menu' ); + + if ( 'none' !== $menu_item && $outside_menu ) { + $classes[] = 'ast-header-custom-item-outside'; + } else { + $classes[] = 'ast-header-custom-item-inside'; + } + + /** + * Add class for header width + */ + $header_content_layout = astra_get_option( 'header-main-layout-width' ); + + if ( 'full' == $header_content_layout ) { + $classes[] = 'ast-full-width-primary-header'; + } + + return $classes; + } +} + +add_filter( 'body_class', 'astra_body_classes' ); + + +/** + * Astra Pagination + */ +if ( ! function_exists( 'astra_number_pagination' ) ) { + + /** + * Astra Pagination + * + * @since 1.0.0 + * @return void Generate & echo pagination markup. + */ + function astra_number_pagination() { + global $wp_query; + $enabled = apply_filters( 'astra_pagination_enabled', true ); + + // Don't print empty markup if their is only one page. + if ( $wp_query->max_num_pages < 2 || ! $enabled ) { + return; + } + + ob_start(); + echo "
"; + the_posts_pagination( + array( + 'prev_text' => astra_default_strings( 'string-blog-navigation-previous', false ), + 'next_text' => astra_default_strings( 'string-blog-navigation-next', false ), + 'taxonomy' => 'category', + 'in_same_term' => true, + ) + ); + echo '
'; + $output = ob_get_clean(); + echo apply_filters( 'astra_pagination_markup', $output ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } +} + +add_action( 'astra_pagination', 'astra_number_pagination' ); + +/** + * Return or echo site logo markup. + */ +if ( ! function_exists( 'astra_logo' ) ) { + + /** + * Return or echo site logo markup. + * + * @since 1.0.0 + * @param boolean $echo Echo markup. + * @return mixed echo or return markup. + */ + function astra_logo( $echo = true ) { + + $site_tagline = astra_get_option( 'display-site-tagline-responsive' ); + $display_site_tagline = ( $site_tagline['desktop'] || $site_tagline['tablet'] || $site_tagline['mobile'] ) ? true : false; + $site_title = astra_get_option( 'display-site-title-responsive' ); + $display_site_title = ( $site_title['desktop'] || $site_title['tablet'] || $site_title['mobile'] ) ? true : false; + + $html = ''; + + $has_custom_logo = apply_filters( 'astra_has_custom_logo', has_custom_logo() ); + + // Site logo. + if ( $has_custom_logo ) { + + if ( apply_filters( 'astra_replace_logo_width', true ) ) { + add_filter( 'wp_get_attachment_image_src', 'astra_replace_header_logo', 10, 4 ); + } + + $html .= ''; + $html .= get_custom_logo(); + $html .= ''; + + if ( apply_filters( 'astra_replace_logo_width', true ) ) { + remove_filter( 'wp_get_attachment_image_src', 'astra_replace_header_logo', 10 ); + } + } + + $html .= astra_get_site_title_tagline( $display_site_title, $display_site_tagline ); + + $html = apply_filters( 'astra_logo', $html, $display_site_title, $display_site_tagline ); + + /** + * Echo or Return the Logo Markup + */ + if ( $echo ) { + echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } else { + return $html; + } + } +} + +/** + * Return or echo site logo markup. + * + * @since 2.2.0 + * @param boolean $display_site_title Site title enable or not. + * @param boolean $display_site_tagline Site tagline enable or not. + * + * @return string return markup. + */ +function astra_get_site_title_tagline( $display_site_title, $display_site_tagline ) { + $html = ''; + + if ( ! apply_filters( 'astra_disable_site_identity', false ) ) { + + // Site Title. + $tag = 'span'; + if ( is_home() || is_front_page() ) { + $tag = 'h1'; + } + + /** + * Filters the site title output. + * + * @since 1.4.9 + * + * @param string the HTML output for Site Title. + */ + // Site Title. + $site_title_markup = apply_filters( + 'astra_site_title_output', + sprintf( + '<%1$s %4$s> + + %3$s + + ', + /** + * Filters the tags for site title. + * + * @since 1.3.1 + * + * @param string $tags string containing the HTML tags for Site Title. + */ + apply_filters( 'astra_site_title_tag', $tag ), + /** + * Filters the href for the site title. + * + * @since 1.4.9 + * + * @param string site title home url + */ + esc_url( apply_filters( 'astra_site_title_href', home_url( '/' ) ) ), + /** + * Filters the site title. + * + * @since 1.4.9 + * + * @param string site title + */ + apply_filters( 'astra_site_title', get_bloginfo( 'name' ) ), + astra_attr( + 'site-title', + array( + 'class' => 'site-title', + ) + ), + astra_attr( + 'site-title-link', + array() + ) + ) + ); + + // Site Description. + /** + * Filters the site description markup. + * + * @since 1.4.9 + * + * @param string the HTML output for Site Title. + */ + $site_tagline_markup = apply_filters( + 'astra_site_description_markup', + sprintf( + '<%1$s class="site-description" itemprop="description"> + %2$s + ', + /** + * Filters the tags for site tagline. + * + * @since 1.8.5 + */ + apply_filters( 'astra_site_tagline_tag', 'p' ), + /** + * Filters the site description. + * + * @since 1.4.9 + * + * @param string site description + */ + apply_filters( 'astra_site_description', get_bloginfo( 'description' ) ) + ) + ); + + if ( $display_site_title || $display_site_tagline ) { + /* translators: 1: Site Title Markup, 2: Site Tagline Markup */ + $html .= sprintf( + '
+ %1$s + %2$s +
', + ( $display_site_title ) ? $site_title_markup : '', + ( $display_site_tagline ) ? $site_tagline_markup : '' + ); + } + } + return $html; +} + +/** + * Return the selected sections + */ +if ( ! function_exists( 'astra_get_dynamic_header_content' ) ) { + + /** + * Return the selected sections + * + * @since 1.0.0 + * @param string $option Custom content type. E.g. search, text-html etc. + * @return array Array of Custom contents. + */ + function astra_get_dynamic_header_content( $option ) { + + $output = array(); + $section = astra_get_option( $option ); + + switch ( $section ) { + + case 'search': + $output[] = astra_get_search( $option ); + break; + + case 'text-html': + $output[] = astra_get_custom_html( $option . '-html' ); + break; + + case 'widget': + $output[] = astra_get_custom_widget( $option ); + break; + + case 'button': + $output[] = astra_get_custom_button( $option . '-button-text', $option . '-button-link-option', $option . '-button-style' ); + break; + + default: + $output[] = apply_filters( 'astra_get_dynamic_header_content', '', $option, $section ); + break; + } + + return apply_filters( 'astra_get_dynamic_header_content_final', $output ); + } +} + + +/** + * Adding Wrapper for Search Form. + */ +if ( ! function_exists( 'astra_get_search' ) ) { + + /** + * Adding Wrapper for Search Form. + * + * @since 1.0.0 + * @param string $option Search Option name. + * @param string $device Device name. + * @return mixed Search HTML structure created. + */ + function astra_get_search( $option = '', $device = '' ) { + ob_start(); + ?> + + ' . do_shortcode( $custom_html_content ) . ''; + } elseif ( current_user_can( 'edit_theme_options' ) ) { + $custom_html = '' . __( 'Add Custom HTML', 'astra' ) . ''; + } + + return $custom_html; + } +} + +/** + * Get custom Button. + */ +if ( ! function_exists( 'astra_get_custom_button' ) ) { + + /** + * Get custom HTML added by user. + * + * @since 1.0.0 + * @param string $button_text Button Text. + * @param string $button_options Button Link. + * @param string $button_style Button Style. + * @return String Button added by user in options panel. + */ + function astra_get_custom_button( $button_text = '', $button_options = '', $button_style = '' ) { + + $custom_html = ''; + $button_classes = ''; + $button_text = astra_get_option( $button_text ); + $button_style = astra_get_option( $button_style ); + $outside_menu = astra_get_option( 'header-display-outside-menu' ); + + $header_button = astra_get_option( $button_options ); + $new_tab = ( $header_button['new_tab'] ? 'target="_blank"' : 'target="_self"' ); + $link_rel = ( ! empty( $header_button['link_rel'] ) ? 'rel="' . esc_attr( $header_button['link_rel'] ) . '"' : '' ); + + $button_classes = ( 'theme-button' === $button_style ? 'ast-button' : 'ast-custom-button' ); + $outside_menu_item = apply_filters( 'astra_convert_link_to_button', $outside_menu ); + + if ( '1' == $outside_menu_item ) { + $custom_html = '
' . esc_attr( do_shortcode( $button_text ) ) . '
'; + } else { + $custom_html = '
' . esc_attr( do_shortcode( $button_text ) ) . '
'; + $custom_html .= '' . esc_attr( do_shortcode( $button_text ) ) . ''; + } + + return $custom_html; + } +} + +/** + * Get Widget added by user. + */ +if ( ! function_exists( 'astra_get_custom_widget' ) ) { + + /** + * Get custom widget added by user. + * + * @since 1.0.1.1 + * @param string $option_name Option name. + * @return Widget added by user in options panel. + */ + function astra_get_custom_widget( $option_name = '' ) { + + ob_start(); + + if ( 'header-main-rt-section' == $option_name ) { + $widget_id = 'header-widget'; + } + if ( 'footer-sml-section-1' == $option_name ) { + $widget_id = 'footer-widget-1'; + } elseif ( 'footer-sml-section-2' == $option_name ) { + $widget_id = 'footer-widget-2'; + } + + echo '
'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + astra_get_sidebar( $widget_id ); + echo '
'; + + return ob_get_clean(); + } +} + +/** + * Function to get Small Left/Right Footer + */ +if ( ! function_exists( 'astra_get_small_footer' ) ) { + + /** + * Function to get Small Left/Right Footer + * + * @since 1.0.0 + * @param string $section Sections of Small Footer. + * @return mixed Markup of sections. + */ + function astra_get_small_footer( $section = '' ) { + + $small_footer_type = astra_get_option( $section ); + $output = null; + + switch ( $small_footer_type ) { + case 'menu': + $output = astra_get_small_footer_menu(); + break; + + case 'custom': + $output = astra_get_small_footer_custom_text( $section . '-credit' ); + break; + + case 'widget': + $output = astra_get_custom_widget( $section ); + break; + } + + return $output; + } +} + +/** + * Function to get Small Footer Custom Text + */ +if ( ! function_exists( 'astra_get_small_footer_custom_text' ) ) { + + /** + * Function to get Small Footer Custom Text + * + * @since 1.0.14 + * @param string $option Custom text option name. + * @return mixed Markup of custom text option. + */ + function astra_get_small_footer_custom_text( $option = '' ) { + + $output = $option; + + if ( '' != $option ) { + $output = astra_get_option( $option ); + $output = str_replace( '[current_year]', date_i18n( 'Y' ), $output ); + $output = str_replace( '[site_title]', '' . get_bloginfo( 'name' ) . '', $output ); + + $theme_author = apply_filters( + 'astra_theme_author', + array( + 'theme_name' => __( 'Astra WordPress Theme', 'astra' ), + 'theme_author_url' => 'https://wpastra.com/', + ) + ); + + $output = str_replace( '[theme_author]', '' . $theme_author['theme_name'] . '', $output ); + } + + return do_shortcode( $output ); + } +} + +/** + * Function to get Footer Menu + */ +if ( ! function_exists( 'astra_get_small_footer_menu' ) ) { + + /** + * Function to get Footer Menu + * + * @since 1.0.0 + * @return html + */ + function astra_get_small_footer_menu() { + + ob_start(); + + if ( has_nav_menu( 'footer_menu' ) ) { + wp_nav_menu( + array( + 'container' => 'div', + 'container_class' => 'footer-primary-navigation', + 'theme_location' => 'footer_menu', + 'menu_class' => 'nav-menu', + 'items_wrap' => '', + 'depth' => 1, + ) + ); + } else { + if ( is_user_logged_in() && current_user_can( 'edit_theme_options' ) ) { + ?> + + + * + * @since 1.0.0 + */ + function astra_header_markup() { + + do_action( 'astra_header_markup_before' ); + ?> +
'masthead', + 'class' => join( ' ', astra_get_header_classes() ), + ) + ); + ?> + > + +
+ + +
+
'ast-site-identity', + ) + ); + ?> + > + +
+
+ + + +
+ + + + + + + +
+ '; + /** + * Fires before the Primary Header Menu navigation. + * Disable Primary Menu is checked + * Last Item in Menu is not 'none'. + * Take Last Item in Menu outside is unchecked. + * + * @since 1.4.0 + */ + do_action( 'astra_main_header_custom_menu_item_before' ); + + echo astra_masthead_get_menu_items(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + + /** + * Fires after the Primary Header Menu navigation. + * Disable Primary Menu is checked + * Last Item in Menu is not 'none'. + * Take Last Item in Menu outside is unchecked. + * + * @since 1.4.0 + */ + do_action( 'astra_main_header_custom_menu_item_after' ); + + echo ''; + + } + } else { + + $submenu_class = apply_filters( 'primary_submenu_border_class', ' submenu-with-border' ); + + // Menu Animation. + $menu_animation = astra_get_option( 'header-main-submenu-container-animation' ); + if ( ! empty( $menu_animation ) ) { + $submenu_class .= ' astra-menu-animation-' . esc_attr( $menu_animation ) . ' '; + } + + /** + * Filter the classes(array) for Primary Menu (