' . $output_str . '', $output_str ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } } } } /** * Featured post meta. */ if ( ! function_exists( 'astra_blog_post_get_featured_item' ) ) { /** * To featured image / gallery / audio / video etc. As per the post format. * * @since 1.0 * @return mixed */ function astra_blog_post_get_featured_item() { $post_featured_data = ''; $post_format = get_post_format(); if ( has_post_thumbnail() ) { $post_featured_data = ''; $post_featured_data .= get_the_post_thumbnail(); $post_featured_data .= ''; } else { switch ( $post_format ) { case 'image': break; case 'video': $post_featured_data = astra_get_video_from_post( get_the_ID() ); break; case 'gallery': $post_featured_data = get_post_gallery( get_the_ID(), false ); if ( isset( $post_featured_data['ids'] ) ) { $img_ids = explode( ',', $post_featured_data['ids'] ); $image_alt = get_post_meta( $img_ids[0], '_wp_attachment_image_alt', true ); $image_url = wp_get_attachment_url( $img_ids[0] ); if ( isset( $img_ids[0] ) ) { $post_featured_data = ''; $post_featured_data .= '' . esc_attr( $image_alt ) . ''; $post_featured_data .= ''; } } break; case 'audio': $post_featured_data = do_shortcode( astra_get_audios_from_post( get_the_ID() ) ); break; } } echo $post_featured_data; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } } add_action( 'astra_blog_post_featured_format', 'astra_blog_post_get_featured_item' ); /** * Blog Post Thumbnail / Title & Meta Order */ if ( ! function_exists( 'astra_blog_post_thumbnail_and_title_order' ) ) { /** * Blog post Thubmnail, Title & Blog Meta order * * @since 1.0.8 * @param array $remove_elements Remove unwanted sections. */ function astra_blog_post_thumbnail_and_title_order( $remove_elements = array() ) { $blog_post_thumb_title_order = astra_get_option( 'blog-post-structure' ); $remove_post_element = apply_filters( 'astra_remove_post_elements', $remove_elements ); if ( isset( $blog_post_thumb_title_order ) && isset( $remove_post_element ) ) { foreach ( $remove_post_element as $single ) { $key = array_search( $single, $blog_post_thumb_title_order ); if ( ( $key ) !== false ) { unset( $blog_post_thumb_title_order[ $key ] ); } } } if ( is_singular() ) { return astra_banner_elements_order(); } if ( is_array( $blog_post_thumb_title_order ) ) { // Append the custom class for second element for single post. foreach ( $blog_post_thumb_title_order as $post_thumb_title_order ) { switch ( $post_thumb_title_order ) { // Blog Post Featured Image. case 'image': do_action( 'astra_blog_archive_featured_image_before' ); astra_get_blog_post_thumbnail( 'archive' ); do_action( 'astra_blog_archive_featured_image_after' ); break; // Blog Categories. case 'category': do_action( 'astra_blog_archive_category_before' ); // @codingStandardsIgnoreStart /** * @psalm-suppress InvalidArgument * @psalm-suppress TooManyArguments */ echo astra_post_categories( 'astra_blog_archive_category', 'blog-category-style', true ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped // @codingStandardsIgnoreEnd do_action( 'astra_blog_archive_category_after' ); break; // Blog Tags. case 'tag': do_action( 'astra_blog_archive_tag_before' ); // @codingStandardsIgnoreStart /** * @psalm-suppress InvalidArgument * @psalm-suppress TooManyArguments */ echo astra_post_tags( 'astra_blog_archive_tag', 'blog-tag-style', true ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped // @codingStandardsIgnoreEnd do_action( 'astra_blog_archive_tag_after' ); break; // Blog Post Title. case 'title': do_action( 'astra_blog_archive_title_before' ); astra_get_blog_post_title(); do_action( 'astra_blog_archive_title_after' ); break; // Blog Post Title and Blog Post Meta. case 'title-meta': do_action( 'astra_blog_archive_title_meta_before' ); astra_get_blog_post_title_meta(); do_action( 'astra_blog_archive_title_meta_after' ); break; // Blog Post excerpt. case 'excerpt': do_action( 'astra_blog_archive_excerpt_before' ); astra_the_excerpt(); do_action( 'astra_blog_archive_excerpt_after' ); break; // Blog Post read more. case 'read-more': do_action( 'astra_blog_archive_read_more_before' ); astra_post_link(); do_action( 'astra_blog_archive_read_more_after' ); break; } } } } } /** * Blog / Single Post Thumbnail */ if ( ! function_exists( 'astra_get_blog_post_thumbnail' ) ) { /** * Blog post Thumbnail * * @param string $type Type of post. * @since 1.0.8 */ function astra_get_blog_post_thumbnail( $type = 'archive' ) { if ( 'archive' === $type ) { // Blog Post Featured Image. astra_get_post_thumbnail( '
', '
' ); } elseif ( 'single' === $type ) { // Single Post Featured Image. astra_get_post_thumbnail(); } } } /** * Blog Post Title & Meta Order */ if ( ! function_exists( 'astra_get_blog_post_title_meta' ) ) { /** * Blog post Thumbnail * * @since 1.0.8 */ function astra_get_blog_post_title_meta() { // Blog Post Title and Blog Post Meta. do_action( 'astra_archive_entry_header_before' ); ?>
', esc_url( get_permalink() ), astra_attr( 'article-title-blog', array( 'class' => '', ) ) ), '', get_the_id() ); do_action( 'astra_archive_post_title_after' ); } /** * Get audio files from post content */ if ( ! function_exists( 'astra_get_audios_from_post' ) ) { /** * Get audio files from post content * * @param number $post_id Post id. * @return mixed Iframe. */ function astra_get_audios_from_post( $post_id ) { // for audio post type - grab. $post = get_post( $post_id ); $content = do_shortcode( apply_filters( 'the_content', $post->post_content ) ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound $embeds = apply_filters( 'astra_get_post_audio', get_media_embedded_in_content( $content ) ); if ( empty( $embeds ) ) { return ''; } // check what is the first embed containg video tag, youtube or vimeo. foreach ( $embeds as $embed ) { if ( strpos( $embed, 'audio' ) ) { return '' . $embed . ''; } } } } /** * Get first image from post content */ if ( ! function_exists( 'astra_get_video_from_post' ) ) { /** * Get first image from post content * * @since 1.0 * @param number $post_id Post id. * @return mixed */ function astra_get_video_from_post( $post_id ) { $post = get_post( $post_id ); $content = do_shortcode( apply_filters( 'the_content', $post->post_content ) ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound $embeds = apply_filters( 'astra_get_post_audio', get_media_embedded_in_content( $content ) ); if ( empty( $embeds ) ) { return ''; } // check what is the first embed containg video tag, youtube or vimeo. foreach ( $embeds as $embed ) { if ( strpos( $embed, 'video' ) || strpos( $embed, 'youtube' ) || strpos( $embed, 'vimeo' ) ) { return $embed; } } } } /** * Get last word of string to get meta-key of custom post structure. * * @since 4.0.0 * @param string $string from this get last word. * @return string $last_word result. */ function astra_get_last_meta_word( $string ) { $string = explode( '-', $string ); $last_word = array_pop( $string ); return $last_word; } /** * Get the current archive description. * * @since 4.0.0 * @param string $post_type post type. * @return string $description Description for archive. */ function astra_get_archive_description( $post_type ) { $description = ''; if ( defined( 'SURECART_PLUGIN_FILE' ) && is_page() && get_the_ID() === absint( get_option( 'surecart_shop_page_id' ) ) ) { $description = astra_get_option( 'ast-dynamic-archive-sc_product-custom-description', '' ); return $description; } if ( is_search() ) { if ( have_posts() ) { $description = astra_get_option( 'section-search-page-title-found-custom-description' ); } else { $description = astra_get_option( 'section-search-page-title-not-found-custom-description' ); } return $description; } else { $get_archive_description = get_the_archive_description(); $get_author_meta = trim( get_the_author_meta( 'description' ) ); if ( ! empty( $get_archive_description ) ) { $description = get_the_archive_description(); } if ( is_author() ) { if ( ! empty( $get_author_meta ) ) { $description = get_the_author_meta( 'description' ); } } if ( empty( $description ) && ! have_posts() ) { $description = esc_html( astra_default_strings( 'string-content-nothing-found-message', false ) ); } } if ( is_post_type_archive( $post_type ) ) { $description = astra_get_option( 'ast-dynamic-archive-' . $post_type . '-custom-description', '' ); } if ( 'post' === $post_type && ( ( is_front_page() && is_home() ) || is_home() ) ) { $description = astra_get_option( 'ast-dynamic-archive-post-custom-description', '' ); } return $description; } /** * Custom single post Title & Meta order display. * * @since 4.0.0 * @param array $structure archive or single post structure. * @return mixed */ function astra_banner_elements_order( $structure = array() ) { if ( true === apply_filters( 'astra_remove_entry_header_content', false ) ) { return; } $post_type = ''; if ( ! is_search() ) { /** @psalm-suppress InvalidGlobal */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort global $post; /** @psalm-suppress InvalidGlobal */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( is_null( $post ) ) { return; } $post_type = strval( $post->post_type ); } // If Blog / Latest Post page is active then looping required structural order. if ( ( ! is_front_page() && is_home() ) && false === astra_get_option( 'ast-dynamic-archive-post-banner-on-blog', false ) ) { return astra_blog_post_thumbnail_and_title_order(); } $prefix = 'archive'; $structure = empty( $structure ) ? astra_get_option( 'ast-dynamic-' . $prefix . '-' . $post_type . '-structure', array( 'ast-dynamic-' . $prefix . '-' . $post_type . '-title', 'ast-dynamic-' . $prefix . '-' . $post_type . '-description' ) ) : $structure; $layout_type = astra_get_option( 'ast-dynamic-' . $prefix . '-' . $post_type . '-layout', 'layout-1' ); if ( is_singular() ) { $prefix = 'single'; $structure = astra_get_option( 'ast-dynamic-' . $prefix . '-' . $post_type . '-structure', array( 'ast-dynamic-' . $prefix . '-' . $post_type . '-title', 'ast-dynamic-' . $prefix . '-' . $post_type . '-meta' ) ); if ( 'page' === $post_type ) { $structure = astra_get_option( 'ast-dynamic-single-page-structure', array( 'ast-dynamic-single-page-image', 'ast-dynamic-single-page-title' ) ); } $layout_type = astra_get_option( 'ast-dynamic-' . $prefix . '-' . $post_type . '-layout', 'layout-1' ); } do_action( 'astra_single_post_banner_before' ); $post_type = apply_filters( 'astra_banner_elements_post_type', $post_type ); $prefix = apply_filters( 'astra_banner_elements_prefix', $prefix ); foreach ( apply_filters( 'astra_banner_elements_structure', $structure ) as $metaval ) { $meta_key = $prefix . '-' . astra_get_last_meta_word( $metaval ); switch ( $meta_key ) { case 'single-breadcrumb': do_action( 'astra_single_post_banner_breadcrumb_before' ); echo astra_get_breadcrumb(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped do_action( 'astra_single_post_banner_breadcrumb_after' ); break; case 'single-title': do_action( 'astra_single_post_banner_title_before' ); if ( 'page' === $post_type ) { astra_the_title( '

'', ) ) . '>', '

' ); } else { astra_the_title( '

'', ) ) . '>', '

' ); } do_action( 'astra_single_post_banner_title_after' ); break; case 'single-excerpt': do_action( 'astra_single_post_banner_excerpt_before' ); /** @psalm-suppress PossiblyUndefinedVariable */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort echo ! empty( $post ) && ! empty( $post->ID ) ? '

' . get_the_excerpt( $post->ID ) . '

' : ''; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped /** @psalm-suppress PossiblyUndefinedVariable */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort do_action( 'astra_single_post_banner_excerpt_after' ); break; case 'single-meta': do_action( 'astra_single_post_banner_meta_before' ); $post_meta = astra_get_option( 'ast-dynamic-single-' . $post_type . '-metadata', array( 'comments', 'author', 'date' ) ); $output = ''; if ( ! empty( $post_meta ) ) { $output_str = astra_get_post_meta( $post_meta, '/', 'single-post' ); if ( ! empty( $output_str ) ) { $output = apply_filters( 'astra_single_post_meta', '
' . $output_str . '
' ); // WPCS: XSS OK. } } echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped do_action( 'astra_single_post_banner_meta_after' ); break; case 'single-image': $featured_background = astra_get_option( 'ast-dynamic-single-' . $post_type . '-featured-as-background', false ); if ( 'layout-1' === $layout_type ) { $article_featured_image_position = astra_get_option( 'ast-dynamic-single-' . $post_type . '-article-featured-image-position-layout-1', 'behind' ); } else { $article_featured_image_position = astra_get_option( 'ast-dynamic-single-' . $post_type . '-article-featured-image-position-layout-2', 'none' ); } if ( 'none' !== $article_featured_image_position ) { break; } if ( ( 'layout-2' === $layout_type && false === $featured_background ) || 'layout-1' === $layout_type ) { do_action( 'astra_blog_single_featured_image_before' ); astra_get_blog_post_thumbnail( 'single' ); do_action( 'astra_blog_single_featured_image_after' ); } break; case 'single-taxonomy': case 'single-str-taxonomy': do_action( 'astra_single_post_banner_taxonomies_before' ); echo astra_get_dynamic_taxonomy( 'ast-dynamic-single-' . $post_type . '-structural-taxonomy', 1, astra_get_option( 'ast-dynamic-single-' . $post_type . '-metadata-separator' ), astra_get_option( 'ast-dynamic-single-' . $post_type . '-structural-taxonomy-style', '' ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped do_action( 'astra_single_post_banner_taxonomies_after' ); break; case 'archive-title': do_action( 'astra_blog_archive_title_before' ); add_filter( 'get_the_archive_title_prefix', '__return_empty_string' ); if ( 'layout-1' === $layout_type ) { astra_the_post_title( '

', '

', 0, true ); } else { astra_the_post_title( '

', '

', 0, true ); } remove_filter( 'get_the_archive_title_prefix', '__return_empty_string' ); do_action( 'astra_blog_archive_title_after' ); break; case 'archive-breadcrumb': if ( ! is_author() ) { do_action( 'astra_blog_archive_breadcrumb_before' ); echo astra_get_breadcrumb(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped do_action( 'astra_blog_archive_breadcrumb_after' ); } break; case 'archive-description': do_action( 'astra_blog_archive_description_before' ); echo wp_kses_post( wpautop( astra_get_archive_description( $post_type ) ) ); do_action( 'astra_blog_archive_description_after' ); break; } } do_action( 'astra_single_post_banner_after' ); } /** * Blog Post Per Page * * @since 4.6.0 * @param WP_Query $query Query. */ function astra_blog_post_per_page( $query ) { if ( $query->is_main_query() ) { $limit = apply_filters( 'astra_blog_post_per_page', astra_get_blog_posts_per_page() ); $query->set( 'posts_per_page', $limit ); } } if ( ! is_admin() ) { add_action( 'pre_get_posts', 'astra_blog_post_per_page' ); } /** * Add Blog Layout Class * * @param array $classes Body Class Array. * @since 4.6.0 * @return array */ function astra_primary_class_blog_layout( $classes ) { // Apply grid class to archive page. if ( ( is_home() ) || is_archive() || is_search() ) { $blog_layout = astra_get_blog_layout(); /** @psalm-suppress UndefinedClass */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( ! ( defined( 'ASTRA_EXT_VER' ) && Astra_Ext_Extension::is_active( 'blog-pro' ) ) ) { /** @psalm-suppress UndefinedClass */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort // If a old pro user has used blog-layout-1 to 3 and disabled astra addon then moved layout to 'blog-layout-4'. if ( 'blog-layout-1' == $blog_layout || 'blog-layout-2' === $blog_layout || 'blog-layout-3' === $blog_layout ) { $blog_layout = 'blog-layout-4'; } if ( 'blog-layout-4' == $blog_layout || 'blog-layout-5' === $blog_layout || 'blog-layout-6' === $blog_layout ) { $classes[] = 'ast-grid-3'; } } if ( 'blog-layout-4' == $blog_layout || 'blog-layout-5' === $blog_layout || 'blog-layout-6' === $blog_layout ) { $classes[] = 'ast-' . esc_attr( $blog_layout ) . '-grid'; } $classes = apply_filters( 'astra_primary_class_blog_grid', $classes ); } return $classes; } add_filter( 'astra_primary_class', 'astra_primary_class_blog_layout' ); /** * Blog Layout Customization * * @since 4.6.0 * @return void */ function astra_blog_layout_customization() { $blog_layout = astra_get_blog_layout(); $blog_layout_slugs = array( 'blog-layout-4', 'blog-layout-5', 'blog-layout-6' ); if ( in_array( $blog_layout, $blog_layout_slugs ) ) { remove_action( 'astra_entry_content_blog', 'astra_entry_content_blog_template' ); add_action( 'astra_entry_content_blog', 'astra_blog_layout_template' ); } } add_action( 'wp_head', 'astra_blog_layout_customization' ); /** * Blog Layout Template Markup * * @since 4.6.0 * @return void */ function astra_blog_layout_template() { get_template_part( 'template-parts/blog/' . esc_attr( astra_get_blog_layout() ) ); } /** * Blog Custom excerpt length. * * @since 4.6.0 * @param int $length Length. * @return int */ function astra_custom_excerpt_length( $length ) { $blog_layout = astra_get_blog_layout(); return 'blog-layout-4' === $blog_layout ? 20 : $length; } add_filter( 'excerpt_length', 'astra_custom_excerpt_length', 1 ); /** * Remove link from featured image for layout 6 * * @since 4.6.0 * @param string $content Content. * @return mixed */ function astra_remove_link_from_featured_image( $content = '' ) { $blog_layout = astra_get_blog_layout(); if ( is_archive() || is_home() || is_search() ) { if ( 'blog-layout-6' === $blog_layout ) { add_filter( 'astra_blog_post_featured_image_link_after', '__return_false' ); add_filter( 'astra_blog_post_featured_image_link_before', '__return_false' ); } } return $content; } add_filter( 'wp', 'astra_remove_link_from_featured_image' );