summaryrefslogtreecommitdiff
path: root/inc/blog/single-blog.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/blog/single-blog.php')
-rw-r--r--inc/blog/single-blog.php277
1 files changed, 277 insertions, 0 deletions
diff --git a/inc/blog/single-blog.php b/inc/blog/single-blog.php
new file mode 100644
index 0000000..97b7acd
--- /dev/null
+++ b/inc/blog/single-blog.php
@@ -0,0 +1,277 @@
+<?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() ) {
+ $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' );
+
+/**
+ * Prints HTML with meta information for the current post-date/time and author.
+ */
+if ( ! function_exists( 'astra_single_get_post_meta' ) ) {
+
+ /**
+ * Prints HTML with meta information for the current post-date/time and author.
+ *
+ * @param boolean $echo Output print or return.
+ * @return string|void
+ */
+ function astra_single_get_post_meta( $echo = true ) {
+
+ $enable_meta = apply_filters( 'astra_single_post_meta_enabled', '__return_true' );
+ $post_meta = astra_get_option( 'blog-single-meta' );
+ $current_post_type = get_post_type();
+ $post_type_array = apply_filters( 'astra_single_post_type_meta', array( 'post' ) );
+
+ $output = '';
+ if ( is_array( $post_meta ) && ( in_array( $current_post_type, $post_type_array ) || 'attachment' == $current_post_type ) && $enable_meta ) {
+
+ $output_str = astra_get_post_meta( $post_meta );
+ if ( ! empty( $output_str ) ) {
+ $output = apply_filters( 'astra_single_post_meta', '<div class="entry-meta">' . $output_str . '</div>', $output_str ); // WPCS: XSS OK.
+ }
+ }
+ if ( $echo ) {
+ echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ } else {
+ return $output;
+ }
+ }
+}
+
+/**
+ * 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;
+ ?>
+ <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 astra_attr(
+ 'commen-meta-author',
+ array(
+ 'class' => 'ast-comment-meta ast-row ast-comment-author vcard capitalize',
+ )
+ );
+ echo '>';
+
+ printf(
+ 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 comment_text(); ?>
+ <div class="ast-comment-edit-reply-wrap">
+ <?php edit_comment_link( astra_default_strings( 'string-comment-edit-link', false ), '<span class="ast-edit-link">', '</span>' ); ?>
+ <?php
+ 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;
+ }
+ }
+}
+
+/**
+ * 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() );
+
+ $next_text = sprintf(
+ astra_default_strings( 'string-single-navigation-next', false ),
+ $post_obj->labels->singular_name
+ );
+
+ $prev_text = sprintf(
+ astra_default_strings( 'string-single-navigation-previous', false ),
+ $post_obj->labels->singular_name
+ );
+ /**
+ * Filter the post pagination markup
+ */
+ the_post_navigation(
+ apply_filters(
+ 'astra_single_post_navigation',
+ array(
+ 'next_text' => $next_text,
+ 'prev_text' => $prev_text,
+ )
+ )
+ );
+
+ }
+ }
+}
+
+add_action( 'astra_entry_after', 'astra_single_post_navigation_markup' );