Initial commit: Atomaste website
This commit is contained in:
@@ -0,0 +1,752 @@
|
||||
<?php
|
||||
/**
|
||||
* Blog Config File
|
||||
* Common Functions for Blog and Single Blog
|
||||
*
|
||||
* @package Astra
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare markup for taxonomies.
|
||||
*
|
||||
* @param string $control_tax Taxonomy subcontrol name.
|
||||
* @param int $loop_count Meta loop counter to decide separator appearance.
|
||||
* @param string $separator Separator.
|
||||
* @param string $badge_style For taxonomies as badge styles.
|
||||
* @param string $html_tag HTML tag.
|
||||
*
|
||||
* @return string $output Taxonomy output.
|
||||
*/
|
||||
function astra_get_dynamic_taxonomy( $control_tax, $loop_count, $separator, $badge_style = '', $html_tag = 'p' ) {
|
||||
|
||||
$tax_type = astra_get_option( $control_tax );
|
||||
$post_id = get_the_ID();
|
||||
|
||||
if ( ! $post_id ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$terms = get_the_terms( $post_id, $tax_type );
|
||||
/** @psalm-suppress RedundantCondition */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
if ( $terms && ! empty( $terms ) && ! is_wp_error( $terms ) ) {
|
||||
/** @psalm-suppress RedundantCondition */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
|
||||
$term_links = array();
|
||||
|
||||
/** @psalm-suppress PossibleRawObjectIteration */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
foreach ( $terms as $term ) {
|
||||
/** @psalm-suppress PossibleRawObjectIteration */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
|
||||
$term_link = get_term_link( $term->slug, $tax_type );
|
||||
|
||||
// If there was an error, continue to the next term.
|
||||
if ( is_wp_error( $term_link ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$tax_badge_selector = '';
|
||||
if ( '' !== $badge_style ) {
|
||||
$tax_badge_selector = 'badge' === $badge_style ? 'ast-button ast-badge-tax' : 'ast-underline-text';
|
||||
}
|
||||
|
||||
/** @psalm-suppress PossiblyInvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
$term_links[] = '<a href="' . esc_url( $term_link ) . '" class="' . esc_attr( $tax_badge_selector ) . '">' . esc_html( $term->name ) . '</a>';
|
||||
/** @psalm-suppress PossiblyInvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
}
|
||||
|
||||
$join_separator = 'badge' === $badge_style ? ' ' : ', ';
|
||||
$all_terms = join( $join_separator, $term_links );
|
||||
$output_str = '<' . esc_attr( $html_tag ) . ' class="ast-terms-link">' . $all_terms . '</' . esc_attr( $html_tag ) . '>';
|
||||
|
||||
return ( 1 != $loop_count ) ? ' ' . $separator . ' ' . $output_str : $output_str;
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Author ID.
|
||||
*
|
||||
* @since 4.6.0
|
||||
* @return mixed $author_id Author ID.
|
||||
*/
|
||||
function astra_get_author_id() {
|
||||
global $post;
|
||||
if ( isset( $post->post_author ) ) {
|
||||
$author_id = $post->post_author;
|
||||
} elseif ( is_callable( 'get_the_author_meta' ) ) {
|
||||
$author_id = get_the_author_meta( 'ID' );
|
||||
} else {
|
||||
$author_id = 1;
|
||||
}
|
||||
return $author_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Author Avatar.
|
||||
*
|
||||
* @since 4.6.0
|
||||
* @param string $get_for Get for.
|
||||
* @return mixed $avatar Author Avatar.
|
||||
*/
|
||||
function astra_author_avatar( $get_for = 'single-post' ) {
|
||||
$avatar = '';
|
||||
if ( is_singular() ) {
|
||||
if ( 'single-post' === $get_for && astra_get_option( 'ast-dynamic-single-' . strval( get_post_type() ) . '-author-avatar', false ) ) {
|
||||
$avatar_image_size = astra_get_option( 'ast-dynamic-single-' . strval( get_post_type() ) . '-author-avatar-size', 30 );
|
||||
$avatar = '<span class="ast-author-avatar">' . strval( get_avatar( astra_get_author_id(), $avatar_image_size ) ) . '</span>';
|
||||
} elseif ( 'related-post' === $get_for && astra_get_option( 'related-posts-author-avatar', false ) ) {
|
||||
$avatar_image_size = astra_get_option( 'related-posts-author-avatar-size', 30 );
|
||||
$avatar = '<span class="ast-author-avatar">' . strval( get_avatar( astra_get_author_id(), $avatar_image_size ) ) . '</span>';
|
||||
} else {
|
||||
$avatar = '';
|
||||
}
|
||||
}
|
||||
return $avatar;
|
||||
}
|
||||
|
||||
/**
|
||||
* Common Functions for Blog and Single Blog
|
||||
*
|
||||
* @return post meta
|
||||
*/
|
||||
if ( ! function_exists( 'astra_get_post_meta' ) ) {
|
||||
|
||||
/**
|
||||
* Post meta
|
||||
*
|
||||
* @param array $post_meta Post meta.
|
||||
* @param string $separator Separator.
|
||||
* @param string $render_by Render by Single|Related Posts|Blog.
|
||||
* @return string post meta markup.
|
||||
*/
|
||||
function astra_get_post_meta( $post_meta, $separator = '/', $render_by = '' ) {
|
||||
|
||||
$output_str = '';
|
||||
$loop_count = 1;
|
||||
|
||||
if ( is_singular() ) {
|
||||
if ( 'single-post' === $render_by ) {
|
||||
$separator = 'none' === astra_get_option( 'ast-dynamic-single-' . strval( get_post_type() ) . '-metadata-separator', '/' ) ? ' ' : astra_get_option( 'ast-dynamic-single-' . strval( get_post_type() ) . '-metadata-separator', '/' );
|
||||
} elseif ( 'related-posts' === $render_by ) {
|
||||
$separator = 'none' === $separator ? ' ' : $separator;
|
||||
}
|
||||
} else {
|
||||
$divider_type = astra_get_option( 'blog-post-meta-divider-type' );
|
||||
if ( 'none' !== $divider_type ) {
|
||||
$separator = $divider_type;
|
||||
} else {
|
||||
$separator = ' ';
|
||||
}
|
||||
}
|
||||
|
||||
$separator = apply_filters( 'astra_post_meta_separator', $separator );
|
||||
|
||||
foreach ( $post_meta as $meta_value ) {
|
||||
|
||||
switch ( $meta_value ) {
|
||||
|
||||
case 'author':
|
||||
$output_str .= ( 1 != $loop_count && '' != $output_str ) ? ' ' . $separator . ' ' : '';
|
||||
/** @psalm-suppress InvalidOperand */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
$astra_post_author_html = '' . astra_post_author();
|
||||
/** @psalm-suppress InvalidOperand */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
if ( is_singular() ) {
|
||||
if ( 'single-post' === $render_by ) {
|
||||
$author_prefix_label = astra_get_option( 'ast-dynamic-single-' . strval( get_post_type() ) . '-author-prefix-label', astra_default_strings( 'string-blog-meta-author-by', false ) );
|
||||
$output_str .= astra_author_avatar() . esc_html( $author_prefix_label ) . $astra_post_author_html;
|
||||
} elseif ( 'related-posts' === $render_by ) {
|
||||
$author_prefix_label = astra_get_option( 'related-posts-author-prefix-label', astra_default_strings( 'string-blog-meta-author-by', false ) );
|
||||
$output_str .= astra_author_avatar( 'related-post' ) . esc_html( $author_prefix_label ) . $astra_post_author_html;
|
||||
} else {
|
||||
$output_str .= esc_html( astra_default_strings( 'string-blog-meta-author-by', false ) ) . $astra_post_author_html;
|
||||
}
|
||||
} else {
|
||||
/** @psalm-suppress UndefinedClass */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
if ( defined( 'ASTRA_EXT_VER' ) && Astra_Ext_Extension::is_active( 'blog-pro' ) ) {
|
||||
$author_avatar = astra_get_option( 'blog-meta-author-avatar' );
|
||||
if ( $author_avatar ) {
|
||||
$get_author_id = get_the_author_meta( 'ID' );
|
||||
/** @psalm-suppress ArgumentTypeCoercion */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
$get_author_gravatar = get_avatar_url( $get_author_id, array( 'size' => astra_get_option( 'blog-meta-author-avatar-size', 25 ) ) );
|
||||
/** @psalm-suppress PossiblyFalseOperand */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
$output_str .= '<img class=' . esc_attr( 'ast-author-image' ) . ' src="' . $get_author_gravatar . '" alt="' . get_the_title() . '" />';
|
||||
/** @psalm-suppress PossiblyFalseOperand */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
}
|
||||
}
|
||||
$output_str .= esc_html( astra_get_option( 'blog-meta-author-avatar-prefix-label' ) ) . $astra_post_author_html;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'date':
|
||||
$output_str .= ( 1 != $loop_count && '' != $output_str ) ? ' ' . $separator . ' ' : '';
|
||||
$get_for = 'related-posts' === $render_by ? 'related-post' : 'single-post';
|
||||
$output_str .= astra_post_date( $get_for );
|
||||
break;
|
||||
|
||||
case 'category':
|
||||
$category = astra_post_categories( 'post_categories', 'blog-meta-category-style', false );
|
||||
if ( '' != $category ) {
|
||||
$output_str .= ( 1 != $loop_count && '' != $output_str ) ? ' ' . $separator . ' ' : '';
|
||||
$output_str .= $category;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'tag':
|
||||
$tags = astra_post_tags( 'post_tags', 'blog-meta-tag-style', false );
|
||||
if ( '' != $tags ) {
|
||||
$output_str .= ( 1 != $loop_count && '' != $output_str ) ? ' ' . $separator . ' ' : '';
|
||||
$output_str .= $tags;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'comments':
|
||||
$comment = astra_post_comments();
|
||||
if ( '' != $comment ) {
|
||||
$output_str .= ( 1 != $loop_count && '' != $output_str ) ? ' ' . $separator . ' ' : '';
|
||||
$output_str .= $comment;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$output_str = apply_filters( 'astra_meta_case_' . $meta_value, $output_str, $loop_count, $separator );
|
||||
|
||||
}
|
||||
|
||||
if ( strpos( $meta_value, '-taxonomy' ) !== false ) {
|
||||
$output_str .= astra_get_dynamic_taxonomy( $meta_value, $loop_count, $separator, astra_get_option( $meta_value . '-style', '' ), 'span' );
|
||||
}
|
||||
|
||||
$loop_count ++;
|
||||
}
|
||||
|
||||
return $output_str;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get post format as per new configurations set in customizer.
|
||||
*
|
||||
* @param string $get_for Get for.
|
||||
* @return string HTML markup for date span.
|
||||
* @since 4.1.0
|
||||
*/
|
||||
function astra_get_dynamic_post_format( $get_for = 'single-post' ) {
|
||||
$is_singular = is_singular() ? true : false;
|
||||
|
||||
if ( 'related-post' === $get_for ) {
|
||||
$date_format_option = astra_get_option( 'related-posts-date-format', '' );
|
||||
$date_type = astra_get_option( 'related-posts-meta-date-type', 'published' );
|
||||
$date_format = apply_filters( 'astra_related_post_date_format', ( '' === $date_format_option ) ? get_option( 'date_format' ) : $date_format_option );
|
||||
} else {
|
||||
$post_type = strval( get_post_type() );
|
||||
$date_format_option = $is_singular ? astra_get_option( 'ast-dynamic-single-' . esc_attr( $post_type ) . '-date-format', '' ) : astra_get_option( 'blog-meta-date-format', '' );
|
||||
$date_type = $is_singular ? astra_get_option( 'ast-dynamic-single-' . esc_attr( $post_type ) . '-meta-date-type', 'published' ) : astra_get_option( 'blog-meta-date-type', 'published' );
|
||||
$date_format = apply_filters( 'astra_post_date_format', ( '' === $date_format_option ) ? get_option( 'date_format' ) : $date_format_option );
|
||||
}
|
||||
|
||||
$published_date = strval( get_the_date( $date_format ) );
|
||||
$modified_date = strval( get_the_modified_date( $date_format ) );
|
||||
|
||||
if ( 'updated' === $date_type ) {
|
||||
$class = 'updated';
|
||||
$itemprop = 'dateModified';
|
||||
$date = sprintf(
|
||||
esc_html( '%s' ),
|
||||
$modified_date
|
||||
);
|
||||
} else {
|
||||
$class = 'published';
|
||||
$itemprop = 'datePublished';
|
||||
$date = sprintf(
|
||||
esc_html( '%s' ),
|
||||
$published_date
|
||||
);
|
||||
}
|
||||
|
||||
return sprintf( '<span class="%1$s" itemprop="%2$s"> %3$s </span>', $class, $itemprop, $date );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get category List.
|
||||
*
|
||||
* @since 4.6.0
|
||||
* @param string $filter_name Filter name.
|
||||
* @param string $style_type_slug Style slug.
|
||||
* @param bool $post_meta Post meta.
|
||||
* @return mixed Markup.
|
||||
*/
|
||||
function astra_get_category_list( $filter_name, $style_type_slug, $post_meta ) {
|
||||
$style_type_class = '';
|
||||
$separator = ', ';
|
||||
$categories_list = '';
|
||||
|
||||
$style_type = astra_get_option( $style_type_slug );
|
||||
$separator = 'badge' === $style_type ? ' ' : $separator;
|
||||
$style_type_class = ' ' . $style_type;
|
||||
/* translators: used between list items, there is a space after the comma */
|
||||
$get_category_html = get_the_category_list( apply_filters( 'astra_' . $filter_name, $separator ) );
|
||||
if ( $get_category_html ) {
|
||||
if ( 'badge' === $style_type ) {
|
||||
/** @psalm-suppress PossiblyInvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
$categories_list = str_replace( '<a', '<a class="ast-button"', $get_category_html );
|
||||
} else {
|
||||
$categories_list = $get_category_html;
|
||||
}
|
||||
}
|
||||
|
||||
$post_tax_class = $post_meta ? 'ast-blog-single-element ' : '';
|
||||
|
||||
if ( $categories_list ) {
|
||||
return '<span class="' . $post_tax_class . 'ast-taxonomy-container cat-links' . $style_type_class . '">' . $categories_list . '</span>';
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get tag List.
|
||||
*
|
||||
* @since 4.6.0
|
||||
* @param string $filter_name Filter name.
|
||||
* @param string $style_type_slug style type slug.
|
||||
* @param bool $post_meta Post meta.
|
||||
* @return mixed Markup.
|
||||
*/
|
||||
function astra_get_tag_list( $filter_name, $style_type_slug, $post_meta ) {
|
||||
$style_type_class = '';
|
||||
$separator = ', ';
|
||||
$tags_list = '';
|
||||
|
||||
$style_type = astra_get_option( $style_type_slug );
|
||||
$separator = 'badge' === $style_type ? ' ' : $separator;
|
||||
$style_type_class = ' ' . $style_type;
|
||||
|
||||
/* translators: used between list items, there is a space after the comma */
|
||||
$tags_list_html = get_the_tag_list( '', apply_filters( 'astra_' . $filter_name, $separator ) );
|
||||
|
||||
if ( $tags_list_html ) {
|
||||
if ( 'badge' === $style_type ) {
|
||||
/** @psalm-suppress PossiblyInvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
$tags_list = str_replace( '<a', '<a class="ast-button"', $tags_list_html );
|
||||
} else {
|
||||
$tags_list = $tags_list_html;
|
||||
}
|
||||
}
|
||||
|
||||
$post_tax_class = $post_meta ? 'ast-blog-single-element ' : '';
|
||||
|
||||
if ( $tags_list ) {
|
||||
return '<span class="' . $post_tax_class . 'ast-taxonomy-container tags-links' . $style_type_class . '">' . $tags_list . '</span>';
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Date of Post
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @return html
|
||||
*/
|
||||
if ( ! function_exists( 'astra_post_date' ) ) {
|
||||
|
||||
/**
|
||||
* Function to get Date of Post
|
||||
*
|
||||
* @param string $get_for Get for single/related post/etc.
|
||||
* @return string Markup.
|
||||
*/
|
||||
function astra_post_date( $get_for = 'single-post' ) {
|
||||
$output = '';
|
||||
$output .= '<span class="posted-on">';
|
||||
$output .= astra_get_dynamic_post_format( $get_for );
|
||||
$output .= '</span>';
|
||||
return apply_filters( 'astra_post_date', $output );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Author name.
|
||||
*
|
||||
* @return mixed $author_name Author name.
|
||||
* @since 4.0.0
|
||||
*/
|
||||
function astra_post_author_name() {
|
||||
$author_name = '';
|
||||
$get_the_author = get_the_author();
|
||||
if ( empty( $get_the_author ) ) {
|
||||
/** @psalm-suppress InvalidGlobal */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
global $post;
|
||||
/** @psalm-suppress InvalidGlobal */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
if ( is_object( $post ) && isset( $post->post_author ) ) {
|
||||
$user_id = $post->post_author;
|
||||
/** @psalm-suppress InvalidGlobal */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
global $authordata;
|
||||
/** @psalm-suppress InvalidGlobal */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
$author_data = '';
|
||||
if ( ! $authordata ) {
|
||||
$author_data = get_userdata( $user_id );
|
||||
}
|
||||
|
||||
$author_name = esc_attr( ! empty( $author_data ) ? $author_data->display_name : '' );
|
||||
}
|
||||
} else {
|
||||
$author_name = esc_attr( get_the_author() );
|
||||
}
|
||||
|
||||
return $author_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Author of Post
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @return html
|
||||
*/
|
||||
if ( ! function_exists( 'astra_post_author' ) ) {
|
||||
|
||||
/**
|
||||
* Function to get Author of Post
|
||||
*
|
||||
* @param string $output_filter Filter string.
|
||||
* @return html Markup.
|
||||
*/
|
||||
function astra_post_author( $output_filter = '' ) {
|
||||
|
||||
$author_id = astra_get_author_id();
|
||||
|
||||
ob_start();
|
||||
|
||||
echo '<span ';
|
||||
echo wp_kses_post(
|
||||
astra_attr(
|
||||
'post-meta-author',
|
||||
array(
|
||||
'class' => 'posted-by author',
|
||||
)
|
||||
)
|
||||
);
|
||||
echo '>';
|
||||
// Translators: Author Name. ?>
|
||||
<a title="<?php printf( esc_attr__( 'View all posts by %1$s', 'astra' ), esc_attr( strval( get_the_author() ) ) ); ?>"
|
||||
href="<?php echo esc_url( get_author_posts_url( $author_id ) ); ?>" rel="author"
|
||||
<?php
|
||||
echo wp_kses_post(
|
||||
astra_attr(
|
||||
'author-url',
|
||||
array(
|
||||
'class' => 'url fn n',
|
||||
)
|
||||
)
|
||||
);
|
||||
?>
|
||||
>
|
||||
<span
|
||||
<?php
|
||||
echo wp_kses_post(
|
||||
astra_attr(
|
||||
'author-name',
|
||||
array(
|
||||
'class' => 'author-name',
|
||||
)
|
||||
)
|
||||
);
|
||||
?>
|
||||
>
|
||||
<?php
|
||||
/** @psalm-suppress PossiblyNullArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
echo wp_kses_post( astra_post_author_name() );
|
||||
?>
|
||||
</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
<?php
|
||||
|
||||
$output = ob_get_clean();
|
||||
|
||||
return apply_filters( 'astra_post_author', $output, $output_filter );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Read More Link of Post
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @return html
|
||||
*/
|
||||
if ( ! function_exists( 'astra_post_link' ) ) {
|
||||
|
||||
/**
|
||||
* Function to get Read More Link of Post
|
||||
*
|
||||
* @param string $output_filter Filter string.
|
||||
* @return html Markup.
|
||||
*/
|
||||
function astra_post_link( $output_filter = '' ) {
|
||||
|
||||
$enabled = apply_filters( 'astra_post_link_enabled', '__return_true' );
|
||||
if ( ( is_admin() && ! wp_doing_ajax() ) || ! $enabled ) {
|
||||
return $output_filter;
|
||||
}
|
||||
|
||||
$more_label = Astra_Dynamic_CSS::astra_4_6_0_compatibility() ? esc_html__( 'Read Post »', 'astra' ) : esc_html__( 'Read More »', 'astra' );
|
||||
$read_more_text = apply_filters( 'astra_post_read_more', $more_label );
|
||||
$read_more_classes = apply_filters( 'astra_post_read_more_class', array() );
|
||||
|
||||
$post_link = sprintf(
|
||||
esc_html( '%s' ),
|
||||
'<a class="' . esc_attr( implode( ' ', $read_more_classes ) ) . '" href="' . esc_url( get_permalink() ) . '"> ' . the_title( '<span class="screen-reader-text">', '</span>', false ) . ' ' . $read_more_text . '</a>'
|
||||
);
|
||||
$output = '<p class="ast-blog-single-element ast-read-more-container read-more"> ' . $post_link . '</p>';
|
||||
|
||||
echo wp_kses_post( apply_filters( 'astra_post_link', $output, $output_filter ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Number of Comments of Post
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @return html
|
||||
*/
|
||||
if ( ! function_exists( 'astra_post_comments' ) ) {
|
||||
|
||||
/**
|
||||
* Function to get Number of Comments of Post
|
||||
*
|
||||
* @param string $output_filter Output filter.
|
||||
* @return html Markup.
|
||||
*/
|
||||
function astra_post_comments( $output_filter = '' ) {
|
||||
|
||||
$output = '';
|
||||
|
||||
ob_start();
|
||||
if ( ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
|
||||
?>
|
||||
<span class="comments-link">
|
||||
<?php
|
||||
/**
|
||||
* Get Comment Link
|
||||
*
|
||||
* @see astra_default_strings()
|
||||
*/
|
||||
comments_popup_link( astra_default_strings( 'string-blog-meta-leave-a-comment', false ), astra_default_strings( 'string-blog-meta-one-comment', false ), astra_default_strings( 'string-blog-meta-multiple-comment', false ) );
|
||||
?>
|
||||
</span>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
$output = ob_get_clean();
|
||||
|
||||
return apply_filters( 'astra_post_comments', $output, $output_filter );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Tags applied of Post
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @return mixed
|
||||
*/
|
||||
if ( ! function_exists( 'astra_post_tags' ) ) {
|
||||
|
||||
/**
|
||||
* Function to get Tags applied of Post
|
||||
*
|
||||
* @param string $filter_name Filter name.
|
||||
* @param string $style_type Style type slug.
|
||||
* @param bool $post_meta Post meta.
|
||||
* @return mixed Markup.
|
||||
*/
|
||||
function astra_post_tags( $filter_name, $style_type, $post_meta ) {
|
||||
return apply_filters( 'astra_' . $filter_name, astra_get_tag_list( $filter_name . '_separator', $style_type, $post_meta ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Categories of Post
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @return mixed
|
||||
*/
|
||||
if ( ! function_exists( 'astra_post_categories' ) ) {
|
||||
|
||||
/**
|
||||
* Function to get Categories applied of Post
|
||||
*
|
||||
* @param string $filter_name Filter name.
|
||||
* @param string $style_type Style type slug.
|
||||
* @param bool $post_meta Post meta.
|
||||
* @return mixed Markup.
|
||||
*/
|
||||
function astra_post_categories( $filter_name, $style_type, $post_meta ) {
|
||||
return apply_filters( 'astra_' . $filter_name, astra_get_category_list( $filter_name . '_separator', $style_type, $post_meta ) );
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Display classes for primary div
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
if ( ! function_exists( 'astra_blog_layout_class' ) ) {
|
||||
|
||||
/**
|
||||
* Layout class
|
||||
*
|
||||
* @param string $class Class.
|
||||
*/
|
||||
function astra_blog_layout_class( $class = '' ) {
|
||||
|
||||
// Separates classes with a single space, collates classes for body element.
|
||||
echo 'class="' . esc_attr( join( ' ', astra_get_blog_layout_class( $class ) ) ) . '"';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the classes for the body element as an array.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @param string|array $class One or more classes to add to the class list.
|
||||
* @return array Array of classes.
|
||||
*/
|
||||
if ( ! function_exists( 'astra_get_blog_layout_class' ) ) {
|
||||
|
||||
/**
|
||||
* Retrieve the classes for the body element as an array.
|
||||
*
|
||||
* @param string $class Class.
|
||||
*/
|
||||
function astra_get_blog_layout_class( $class = '' ) {
|
||||
|
||||
// array of class names.
|
||||
$classes = array();
|
||||
|
||||
$post_format = get_post_format();
|
||||
if ( $post_format ) {
|
||||
$post_format = 'standard';
|
||||
}
|
||||
|
||||
$classes[] = 'ast-post-format-' . $post_format;
|
||||
|
||||
if ( ! has_post_thumbnail() || ! wp_get_attachment_image_src( get_post_thumbnail_id() ) ) {
|
||||
switch ( $post_format ) {
|
||||
|
||||
case 'aside':
|
||||
$classes[] = 'ast-no-thumb';
|
||||
break;
|
||||
|
||||
case 'image':
|
||||
$has_image = astra_get_first_image_from_post();
|
||||
if ( empty( $has_image ) || is_single() ) {
|
||||
$classes[] = 'ast-no-thumb';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'video':
|
||||
$post_featured_data = astra_get_video_from_post( get_the_ID() );
|
||||
if ( empty( $post_featured_data ) ) {
|
||||
$classes[] = 'ast-no-thumb';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'quote':
|
||||
$classes[] = 'ast-no-thumb';
|
||||
break;
|
||||
|
||||
case 'link':
|
||||
$classes[] = 'ast-no-thumb';
|
||||
break;
|
||||
|
||||
case 'gallery':
|
||||
$post_featured_data = get_post_gallery();
|
||||
if ( empty( $post_featured_data ) || is_single() ) {
|
||||
$classes[] = 'ast-no-thumb';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'audio':
|
||||
$has_audio = astra_get_audios_from_post( get_the_ID() );
|
||||
if ( empty( $has_audio ) || is_single() ) {
|
||||
$classes[] = 'ast-no-thumb';
|
||||
} else {
|
||||
$classes[] = 'ast-embeded-audio';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'standard':
|
||||
default:
|
||||
if ( ! has_post_thumbnail() || ! wp_get_attachment_image_src( get_post_thumbnail_id() ) ) {
|
||||
$classes[] = 'ast-no-thumb';
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! in_array( 'ast-no-thumb', $classes ) && ! in_array( 'image', astra_get_option( 'blog-post-structure', array() ) ) ) {
|
||||
$classes[] = 'ast-no-thumb';
|
||||
}
|
||||
|
||||
if ( ! empty( $class ) ) {
|
||||
if ( ! is_array( $class ) ) {
|
||||
$class = preg_split( '#\s+#', $class );
|
||||
}
|
||||
$classes = array_merge( $classes, $class );
|
||||
} else {
|
||||
// Ensure that we always coerce class to being an array.
|
||||
$class = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter primary div class names
|
||||
*/
|
||||
$classes = apply_filters( 'astra_blog_layout_class', $classes, $class );
|
||||
|
||||
$classes = array_map( 'sanitize_html_class', $classes );
|
||||
|
||||
return array_unique( $classes );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get Content Read More Link of Post
|
||||
*
|
||||
* @since 1.2.7
|
||||
* @return mixed
|
||||
*/
|
||||
if ( ! function_exists( 'astra_the_content_more_link' ) ) {
|
||||
|
||||
/**
|
||||
* Filters the Read More link text.
|
||||
*
|
||||
* @param string $more_link_element Read More link element.
|
||||
* @param string $more_link_text Read More text.
|
||||
* @return mixed Markup.
|
||||
*/
|
||||
function astra_the_content_more_link( $more_link_element = '', $more_link_text = '' ) {
|
||||
|
||||
$enabled = apply_filters( 'astra_the_content_more_link_enabled', '__return_true' );
|
||||
if ( ( is_admin() && ! wp_doing_ajax() ) || ! $enabled ) {
|
||||
return $more_link_element;
|
||||
}
|
||||
|
||||
$more_link_text = apply_filters( 'astra_the_content_more_string', __( 'Read More »', 'astra' ) );
|
||||
$read_more_classes = apply_filters( 'astra_the_content_more_link_class', array() );
|
||||
|
||||
$post_link = sprintf(
|
||||
esc_html( '%s' ),
|
||||
'<a class="' . esc_attr( implode( ' ', $read_more_classes ) ) . '" href="' . esc_url( get_permalink() ) . '"> ' . the_title( '<span class="screen-reader-text">', '</span>', false ) . $more_link_text . '</a>'
|
||||
);
|
||||
|
||||
$more_link_element = ' …<p class="ast-the-content-more-link"> ' . $post_link . '</p>';
|
||||
|
||||
return apply_filters( 'astra_the_content_more_link', $more_link_element, $more_link_text );
|
||||
}
|
||||
}
|
||||
add_filter( 'the_content_more_link', 'astra_the_content_more_link', 10, 2 );
|
||||
@@ -0,0 +1,793 @@
|
||||
<?php
|
||||
/**
|
||||
* Blog Helper Functions
|
||||
*
|
||||
* @package Astra
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds custom classes to the array of body classes.
|
||||
*/
|
||||
if ( ! function_exists( 'astra_blog_body_classes' ) ) {
|
||||
|
||||
/**
|
||||
* Adds custom classes to the array of body classes.
|
||||
*
|
||||
* @since 1.0
|
||||
* @param array $classes Classes for the body element.
|
||||
* @return array
|
||||
*/
|
||||
function astra_blog_body_classes( $classes ) {
|
||||
|
||||
// Adds a class of group-blog to blogs with more than 1 published author.
|
||||
if ( is_multi_author() ) {
|
||||
$classes[] = 'group-blog';
|
||||
}
|
||||
|
||||
return $classes;
|
||||
}
|
||||
}
|
||||
|
||||
add_filter( 'body_class', 'astra_blog_body_classes' );
|
||||
|
||||
/**
|
||||
* Adds custom classes to the array of post grid classes.
|
||||
*/
|
||||
if ( ! function_exists( 'astra_post_class_blog_grid' ) ) {
|
||||
|
||||
/**
|
||||
* Adds custom classes to the array of post grid classes.
|
||||
*
|
||||
* @since 1.0
|
||||
* @param array $classes Classes for the post element.
|
||||
* @return array
|
||||
*/
|
||||
function astra_post_class_blog_grid( $classes ) {
|
||||
$blog_layout = astra_get_blog_layout();
|
||||
if ( is_archive() || is_home() || is_search() ) {
|
||||
$classes[] = astra_attr( 'ast-blog-col' );
|
||||
$classes[] = 'ast-article-post';
|
||||
|
||||
/** @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 ( 'blog-layout-4' === $blog_layout ) {
|
||||
$classes[] = 'remove-featured-img-padding';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $classes;
|
||||
}
|
||||
}
|
||||
|
||||
add_filter( 'post_class', 'astra_post_class_blog_grid' );
|
||||
|
||||
/**
|
||||
* Add Body Classes
|
||||
*
|
||||
* @param array $classes Blog Layout Class Array.
|
||||
* @since 4.6.0
|
||||
* @return array
|
||||
*/
|
||||
function astra_add_blog_layout_class( $classes ) {
|
||||
if ( ! is_singular() ) {
|
||||
$classes[] = 'ast-article-inner';
|
||||
}
|
||||
return $classes;
|
||||
}
|
||||
|
||||
add_filter( 'astra_blog_layout_class', 'astra_add_blog_layout_class' );
|
||||
|
||||
/**
|
||||
* Prints HTML with meta information for the current post-date/time and author.
|
||||
*/
|
||||
if ( ! function_exists( 'astra_blog_get_post_meta' ) ) {
|
||||
|
||||
/**
|
||||
* Prints HTML with meta information for the current post-date/time and author.
|
||||
*
|
||||
* @since 1.0
|
||||
* @return mixed Markup.
|
||||
*/
|
||||
function astra_blog_get_post_meta() {
|
||||
|
||||
$enable_meta = apply_filters( 'astra_blog_post_meta_enabled', '__return_true' );
|
||||
$post_meta = astra_get_option( 'blog-meta' );
|
||||
$current_post_type = get_post_type();
|
||||
|
||||
if ( is_array( $post_meta ) && $enable_meta ) {
|
||||
|
||||
$output_str = astra_get_post_meta( $post_meta, '/', 'blog' );
|
||||
|
||||
if ( ! empty( $output_str ) ) {
|
||||
echo apply_filters( 'astra_blog_post_meta', '<div class="entry-meta">' . $output_str . '</div>', $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 = '<a href="' . esc_url( get_permalink() ) . '" >';
|
||||
$post_featured_data .= get_the_post_thumbnail();
|
||||
$post_featured_data .= '</a>';
|
||||
|
||||
} 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 = '<a href="' . esc_url( get_permalink() ) . '" >';
|
||||
$post_featured_data .= '<img src="' . esc_url( $image_url ) . '" alt="' . esc_attr( $image_alt ) . '" >';
|
||||
$post_featured_data .= '</a>';
|
||||
}
|
||||
}
|
||||
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( '<div class="ast-blog-featured-section post-thumb ast-blog-single-element">', '</div>' );
|
||||
} 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' );
|
||||
?>
|
||||
<header class="entry-header ast-blog-single-element ast-blog-meta-container">
|
||||
<?php
|
||||
|
||||
do_action( 'astra_archive_post_meta_before' );
|
||||
|
||||
astra_blog_get_post_meta();
|
||||
|
||||
do_action( 'astra_archive_post_meta_after' );
|
||||
|
||||
?>
|
||||
</header><!-- .entry-header -->
|
||||
<?php
|
||||
|
||||
do_action( 'astra_archive_entry_header_after' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Blog post title
|
||||
*
|
||||
* @since 4.6.0
|
||||
*/
|
||||
function astra_get_blog_post_title() {
|
||||
|
||||
do_action( 'astra_archive_post_title_before' );
|
||||
|
||||
/* translators: 1: Current post link, 2: Current post id */
|
||||
astra_the_post_title(
|
||||
sprintf(
|
||||
'<h2 class="entry-title ast-blog-single-element" %2$s><a href="%1$s" rel="bookmark">',
|
||||
esc_url( get_permalink() ),
|
||||
astra_attr(
|
||||
'article-title-blog',
|
||||
array(
|
||||
'class' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
'</a></h2>',
|
||||
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 '<span class="ast-post-audio-wrapper">' . $embed . '</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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() ) {
|
||||
return have_posts()
|
||||
? astra_get_i18n_option( 'section-search-page-title-found-custom-description', _x( '%astra%', 'Search Page Title: Subheading - When Results Found', 'astra' ) )
|
||||
: astra_get_i18n_option( 'section-search-page-title-not-found-custom-description', _x( '%astra%', 'Search Page Title: Subheading - When Results Not Found', 'astra' ) );
|
||||
} 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() && ! ( is_category() || is_tag() || is_tax() ) ) {
|
||||
$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 = is_search() ? 'post' : astra_get_post_type();
|
||||
|
||||
// If 404 page.
|
||||
if ( is_404() ) {
|
||||
$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(
|
||||
'<h1 class="entry-title" ' . astra_attr(
|
||||
'article-title-content-page',
|
||||
array(
|
||||
'class' => '',
|
||||
)
|
||||
) . '>',
|
||||
'</h1>'
|
||||
);
|
||||
} else {
|
||||
astra_the_title(
|
||||
'<h1 class="entry-title" ' . astra_attr(
|
||||
'article-title-blog-single',
|
||||
array(
|
||||
'class' => '',
|
||||
)
|
||||
) . '>',
|
||||
'</h1>'
|
||||
);
|
||||
}
|
||||
do_action( 'astra_single_post_banner_title_after' );
|
||||
break;
|
||||
|
||||
case 'single-excerpt':
|
||||
/** @psalm-suppress InvalidGlobal */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
global $post;
|
||||
do_action( 'astra_single_post_banner_excerpt_before' );
|
||||
/** @psalm-suppress PossiblyUndefinedVariable */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
echo ! empty( $post ) && ! empty( $post->ID ) ? '<p>' . get_the_excerpt( $post->ID ) . '</p>' : ''; // 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', '<div class="entry-meta">' . $output_str . '</div>' ); // WPCS: XSS OK.
|
||||
}
|
||||
}
|
||||
echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
do_action( 'astra_single_post_banner_meta_after' );
|
||||
break;
|
||||
|
||||
case 'single-image':
|
||||
if ( 'disabled' === astra_get_option_meta( 'ast-featured-img' ) ) {
|
||||
break;
|
||||
}
|
||||
|
||||
$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( '<h1 class="page-title ast-archive-title">', '</h1>', 0, true );
|
||||
} else {
|
||||
astra_the_post_title( '<h1>', '</h1>', 0, true );
|
||||
do_action( 'astra_after_archive_title' );
|
||||
}
|
||||
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 ( is_admin() || ! $query->is_main_query() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! ( is_home() || is_archive() || is_search() ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$exclusions = apply_filters(
|
||||
'astra_blog_post_per_page_exclusions',
|
||||
array(
|
||||
'bbpress_single',
|
||||
'courses_archive',
|
||||
'product',
|
||||
)
|
||||
);
|
||||
|
||||
if ( in_array( $query->get( 'post_type' ), $exclusions, true ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$limit = apply_filters( 'astra_blog_post_per_page', astra_get_blog_posts_per_page() );
|
||||
$query->set( 'posts_per_page', $limit );
|
||||
}
|
||||
|
||||
add_action( 'parse_tax_query', '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 ) {
|
||||
|
||||
if ( is_archive() && function_exists( 'is_bbpress' ) &&
|
||||
( get_post_type() === 'forum' || get_post_type() === 'topic' || get_post_type() === 'reply' || get_query_var( 'post_type' ) === 'forum' || bbp_is_topic_tag() || bbp_is_topic_tag_edit() || is_bbpress() )
|
||||
) {
|
||||
return $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' );
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
/**
|
||||
* Index file
|
||||
*
|
||||
* @package Astra
|
||||
* @since Astra 1.0.0
|
||||
*/
|
||||
|
||||
/* Silence is golden, and we agree. */
|
||||
@@ -0,0 +1,297 @@
|
||||
<?php
|
||||
/**
|
||||
* Single Blog Helper Functions
|
||||
*
|
||||
* @package Astra
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds custom classes to the array of body classes.
|
||||
*/
|
||||
if ( ! function_exists( 'astra_single_body_class' ) ) {
|
||||
|
||||
/**
|
||||
* 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_single_body_class( $classes ) {
|
||||
|
||||
// Blog layout.
|
||||
if ( is_single() ) {
|
||||
$classes[] = 'ast-blog-single-style-1';
|
||||
|
||||
if ( 'post' != get_post_type() ) {
|
||||
$classes[] = 'ast-custom-post-type';
|
||||
}
|
||||
}
|
||||
|
||||
if ( is_singular() ) {
|
||||
$classes[] = 'ast-single-post';
|
||||
}
|
||||
|
||||
return $classes;
|
||||
}
|
||||
}
|
||||
|
||||
add_filter( 'body_class', 'astra_single_body_class' );
|
||||
|
||||
/**
|
||||
* Adds custom classes to the array of body classes.
|
||||
*/
|
||||
if ( ! function_exists( 'astra_single_post_class' ) ) {
|
||||
|
||||
/**
|
||||
* 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_single_post_class( $classes ) {
|
||||
|
||||
// Blog layout.
|
||||
if ( is_singular() ) {
|
||||
|
||||
if ( ! in_array( 'ast-related-post', $classes ) ) {
|
||||
$classes[] = 'ast-article-single';
|
||||
}
|
||||
|
||||
// Remove hentry from page.
|
||||
if ( 'page' == get_post_type() ) {
|
||||
$classes = array_diff( $classes, array( 'hentry' ) );
|
||||
}
|
||||
}
|
||||
|
||||
return $classes;
|
||||
}
|
||||
}
|
||||
|
||||
add_filter( 'post_class', 'astra_single_post_class' );
|
||||
|
||||
/**
|
||||
* Template for comments and pingbacks.
|
||||
*/
|
||||
if ( ! function_exists( 'astra_theme_comment' ) ) {
|
||||
|
||||
/**
|
||||
* Template for comments and pingbacks.
|
||||
*
|
||||
* To override this walker in a child theme without modifying the comments template
|
||||
* simply create your own astra_theme_comment(), and that function will be used instead.
|
||||
*
|
||||
* Used as a callback by wp_list_comments() for displaying the comments.
|
||||
*
|
||||
* @param string $comment Comment.
|
||||
* @param array $args Comment arguments.
|
||||
* @param number $depth Depth.
|
||||
* @return mixed Comment markup.
|
||||
*/
|
||||
function astra_theme_comment( $comment, $args, $depth ) {
|
||||
switch ( $comment->comment_type ) {
|
||||
|
||||
case 'pingback':
|
||||
case 'trackback':
|
||||
// Display trackbacks differently than normal comments.
|
||||
?>
|
||||
<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
|
||||
<p><?php esc_html_e( 'Pingback:', 'astra' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'astra' ), '<span class="edit-link">', '</span>' ); ?></p>
|
||||
</li>
|
||||
<?php
|
||||
break;
|
||||
|
||||
default:
|
||||
// Proceed with normal comments.
|
||||
global $post;
|
||||
$entry_content_class = Astra_Dynamic_CSS::astra_4_6_0_compatibility() ? ' entry-content' : '';
|
||||
?>
|
||||
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
|
||||
|
||||
<article id="comment-<?php comment_ID(); ?>" class="ast-comment">
|
||||
<div class= 'ast-comment-info'>
|
||||
<div class='ast-comment-avatar-wrap'><?php echo get_avatar( $comment, 50 ); ?></div><!-- Remove 1px Space
|
||||
-->
|
||||
<?php
|
||||
astra_markup_open( 'ast-comment-data-wrap' );
|
||||
astra_markup_open( 'ast-comment-meta-wrap' );
|
||||
echo '<header ';
|
||||
echo wp_kses_post(
|
||||
astra_attr(
|
||||
'commen-meta-author',
|
||||
array(
|
||||
'class' => 'ast-comment-meta ast-row ast-comment-author capitalize',
|
||||
)
|
||||
)
|
||||
);
|
||||
echo '>';
|
||||
|
||||
printf(
|
||||
esc_attr(
|
||||
astra_markup_open(
|
||||
'ast-comment-cite-wrap',
|
||||
array(
|
||||
'open' => '<div %s>',
|
||||
'class' => 'ast-comment-cite-wrap',
|
||||
)
|
||||
)
|
||||
) . '<cite><b class="fn">%1$s</b> %2$s</cite></div>',
|
||||
get_comment_author_link(),
|
||||
// If current post author is also comment author, make it known visually.
|
||||
( $comment->user_id === $post->post_author ) ? '<span class="ast-highlight-text ast-cmt-post-author"></span>' : ''
|
||||
);
|
||||
|
||||
if ( apply_filters( 'astra_single_post_comment_time_enabled', true ) ) {
|
||||
printf(
|
||||
esc_attr(
|
||||
astra_markup_open(
|
||||
'ast-comment-time',
|
||||
array(
|
||||
'open' => '<div %s>',
|
||||
'class' => 'ast-comment-time',
|
||||
)
|
||||
)
|
||||
) . '<span class="timendate"><a href="%1$s"><time datetime="%2$s">%3$s</time></a></span></div>',
|
||||
esc_url( get_comment_link( $comment->comment_ID ) ),
|
||||
esc_attr( get_comment_time( 'c' ) ),
|
||||
/* translators: 1: date, 2: time */
|
||||
esc_html( sprintf( __( '%1$s at %2$s', 'astra' ), get_comment_date(), get_comment_time() ) )
|
||||
);
|
||||
}
|
||||
|
||||
?>
|
||||
<?php astra_markup_close( 'ast-comment-meta-wrap' ); ?>
|
||||
</header> <!-- .ast-comment-meta -->
|
||||
</div>
|
||||
<section class="ast-comment-content comment <?php echo esc_attr( $entry_content_class ); ?>">
|
||||
<?php comment_text(); ?>
|
||||
<div class="ast-comment-edit-reply-wrap">
|
||||
<?php
|
||||
if ( Astra_Dynamic_CSS::astra_4_6_0_compatibility() ) {
|
||||
comment_reply_link(
|
||||
array_merge(
|
||||
$args,
|
||||
array(
|
||||
'reply_text' => astra_default_strings( 'string-comment-reply-link', false ),
|
||||
'add_below' => 'comment',
|
||||
'depth' => $depth,
|
||||
'max_depth' => $args['max_depth'],
|
||||
'before' => '<span class="ast-reply-link">',
|
||||
'after' => '</span>',
|
||||
)
|
||||
)
|
||||
);
|
||||
edit_comment_link( astra_default_strings( 'string-comment-edit-link', false ), '<span class="ast-edit-link">', '</span>' );
|
||||
} else {
|
||||
edit_comment_link( astra_default_strings( 'string-comment-edit-link', false ), '<span class="ast-edit-link">', '</span>' );
|
||||
comment_reply_link(
|
||||
array_merge(
|
||||
$args,
|
||||
array(
|
||||
'reply_text' => astra_default_strings( 'string-comment-reply-link', false ),
|
||||
'add_below' => 'comment',
|
||||
'depth' => $depth,
|
||||
'max_depth' => $args['max_depth'],
|
||||
'before' => '<span class="ast-reply-link">',
|
||||
'after' => '</span>',
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php if ( '0' == $comment->comment_approved ) : ?>
|
||||
<p class="ast-highlight-text comment-awaiting-moderation"><?php echo esc_html( astra_default_strings( 'string-comment-awaiting-moderation', false ) ); ?></p>
|
||||
<?php endif; ?>
|
||||
</section> <!-- .ast-comment-content -->
|
||||
<?php astra_markup_close( 'ast-comment-data-wrap' ); ?>
|
||||
</article><!-- #comment-## -->
|
||||
|
||||
<?php
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjacent navigation post link attributes.
|
||||
*
|
||||
* @param string $output The adjacent post link.
|
||||
* @param string $format Link anchor format.
|
||||
* @param string $link Link permalink format.
|
||||
* @param WP_Post|string $post The adjacent post. Empty string if no corresponding post exists.
|
||||
* @param string $adjacent Whether the post is previous or next.
|
||||
*
|
||||
* @return string Link of post URL.
|
||||
* @since 4.6.0
|
||||
*/
|
||||
function astra_adjacent_post_links_title( $output, $format, $link, $post, $adjacent ) {
|
||||
/** @psalm-suppress PossiblyInvalidPropertyFetch */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
if ( ! empty( $post->post_title ) ) {
|
||||
/** @psalm-suppress PossiblyInvalidPropertyFetch */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
$output = str_replace( 'href="', 'title="' . esc_attr( $post->post_title ) . '" ' . 'href="', $output );
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Post Navigation
|
||||
*/
|
||||
if ( ! function_exists( 'astra_single_post_navigation_markup' ) ) {
|
||||
|
||||
/**
|
||||
* Get Post Navigation
|
||||
*
|
||||
* Checks post navigation, if exists return as button.
|
||||
*
|
||||
* @return mixed Post Navigation Buttons
|
||||
*/
|
||||
function astra_single_post_navigation_markup() {
|
||||
|
||||
$single_post_navigation_enabled = apply_filters( 'astra_single_post_navigation_enabled', true );
|
||||
|
||||
if ( is_single() && $single_post_navigation_enabled ) {
|
||||
|
||||
$post_obj = get_post_type_object( get_post_type() );
|
||||
/** @psalm-suppress PossiblyNullPropertyFetch */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
$post_singular_name = ! empty( $post_obj->labels->singular_name ) ? $post_obj->labels->singular_name : '';
|
||||
/** @psalm-suppress PossiblyNullPropertyFetch */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
||||
|
||||
$prev_text = Astra_Dynamic_CSS::astra_4_6_0_compatibility() ? '<span class="ast-post-nav">' . Astra_Builder_UI_Controller::fetch_svg_icon( 'long-arrow-alt-left' ) . ' ' . astra_default_strings( 'string-previous-text', false ) . '</span> <p> %title </p>' : sprintf(
|
||||
astra_default_strings( 'string-single-navigation-previous', false ),
|
||||
$post_singular_name
|
||||
);
|
||||
$next_text = Astra_Dynamic_CSS::astra_4_6_0_compatibility() ? '<span class="ast-post-nav">' . astra_default_strings( 'string-next-text', false ) . ' ' . Astra_Builder_UI_Controller::fetch_svg_icon( 'long-arrow-alt-right' ) . '</span> <p> %title </p>' : sprintf(
|
||||
astra_default_strings( 'string-single-navigation-next', false ),
|
||||
$post_singular_name
|
||||
);
|
||||
|
||||
add_filter( 'previous_post_link', 'astra_adjacent_post_links_title', 10, 5 );
|
||||
add_filter( 'next_post_link', 'astra_adjacent_post_links_title', 10, 5 );
|
||||
|
||||
/**
|
||||
* Filter the post pagination markup
|
||||
*/
|
||||
the_post_navigation(
|
||||
apply_filters(
|
||||
'astra_single_post_navigation',
|
||||
array(
|
||||
'next_text' => $next_text,
|
||||
'prev_text' => $prev_text,
|
||||
'screen_reader_text' => __( 'Post navigation', 'astra' ),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
remove_filter( 'previous_post_link', 'astra_adjacent_post_links_title', 10 );
|
||||
remove_filter( 'next_post_link', 'astra_adjacent_post_links_title', 10 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
add_action( 'astra_entry_after', 'astra_single_post_navigation_markup' );
|
||||
Reference in New Issue
Block a user