Astra_Ext_Blog_Pro_Markup
Description
Source
File: addons/blog-pro/classes/class-astra-ext-blog-pro-markup.php
class Astra_Ext_Blog_Pro_Markup {
/**
* Member Variable
*
* @var object instance
*/
private static $instance;
/**
* Initiator
*/
public static function get_instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor
*/
public function __construct() {
add_filter( 'body_class', array( $this, 'astra_ext_blog_pro_body_classes' ) );
add_filter( 'post_class', array( $this, 'astra_post_class_blog_grid' ) );
add_filter( 'astra_primary_class', array( $this, 'astra_primary_class_blog_grid' ) );
add_filter( 'astra_blog_layout_class', array( $this, 'add_blog_layout_class' ) );
add_action( 'astra_get_js_files', array( $this, 'add_scripts' ) );
add_action( 'astra_get_css_files', array( $this, 'add_styles' ), 1 );
add_action( 'wp_head', array( $this, 'blog_customization' ) );
add_filter( 'astra_blog_post_featured_image_after', array( $this, 'date_box' ), 10, 1 );
add_filter( 'astra_related_post_featured_image_after', array( $this, 'date_box' ), 10, 1 );
add_action( 'astra_entry_after', array( $this, 'author_info_markup' ) );
add_action( 'astra_entry_after', array( $this, 'single_post_navigation_markup' ), 9 );
add_filter( 'astra_theme_js_localize', array( $this, 'blog_js_localize' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_frontend_scripts' ) );
// Blog Pagination.
add_filter( 'astra_pagination_markup', array( $this, 'astra_blog_pagination' ) );
add_filter( 'astra_meta_case_read-time', array( $this, 'reading_time_content' ), 10, 3 );
add_action( 'init', array( $this, 'init_action' ) );
}
/**
* Infinite Posts Show on scroll
*
* @since 1.0
* @param array $localize JS localize variables.
* @return array
*/
public function blog_js_localize( $localize ) {
global $wp_query;
$pagination_enabled = apply_filters( 'astra_pagination_enabled', true );
$blog_masonry = astra_get_option( 'blog-masonry' );
$blog_pagination = ( $pagination_enabled ) ? astra_get_option( 'blog-pagination' ) : '';
$blog_infinite_scroll_event = astra_get_option( 'blog-infinite-scroll-event' );
$blog_grid = astra_get_option( 'blog-grid' );
$blog_grid_layout = astra_get_option( 'blog-grid-layout' );
$blog_layout = astra_get_option( 'blog-layout' );
$grid_layout = ( 'blog-layout-1' == $blog_layout ) ? $blog_grid : $blog_grid_layout;
$localize['edit_post_url'] = admin_url( 'post.php?post={{id}}&action=edit' );
$localize['ajax_url'] = admin_url( 'admin-ajax.php' );
$localize['infinite_count'] = 2;
$localize['infinite_total'] = $wp_query->max_num_pages;
$localize['pagination'] = $blog_pagination;
$localize['infinite_scroll_event'] = $blog_infinite_scroll_event;
$localize['no_more_post_message'] = apply_filters( 'astra_blog_no_more_post_text', __( 'No more posts to show.', 'astra-addon' ) );
$localize['grid_layout'] = $grid_layout;
$localize['site_url'] = get_site_url();
$localize['show_comments'] = __( 'Show Comments', 'astra-addon' );
// If woocommerce page template.
if ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) {
$localize['masonryEnabled'] = false;
} else {
$localize['masonryEnabled'] = $blog_masonry;
$localize['blogMasonryBreakPoint'] = absint( apply_filters( 'astra_blog_masonry_break_point', astra_addon_get_tablet_breakpoint() ) );
}
return $localize;
}
/**
* Astra Blog Pagination
*
* @since 1.0
* @param html $output Pagination markup.
* @return html
*/
public function astra_blog_pagination( $output ) {
global $wp_query;
$pagination = astra_get_option( 'blog-pagination' );
$infinite_event = astra_get_option( 'blog-infinite-scroll-event' );
$load_more_text = astra_get_option( 'blog-load-more-text' );
if ( '' === $load_more_text ) {
$load_more_text = __( 'Load More', 'astra-addon' );
}
if ( 'infinite' == $pagination ) {
if ( $wp_query->max_num_pages > 1 ) {
ob_start();
?>
<nav class="ast-pagination-infinite">
<div class="ast-loader">
<div class="ast-loader-1"></div>
<div class="ast-loader-2"></div>
<div class="ast-loader-3"></div>
</div>
<?php if ( 'click' == $infinite_event ) { ?>
<span class="ast-load-more active">
<?php echo apply_filters( 'astra_load_more_text', esc_html( $load_more_text ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</span>
<?php } ?>
</nav>
<?php
$output .= ob_get_clean();
}
}
return $output;
}
/**
* Function to get author info for default post only
*/
public function author_info_markup() {
if ( astra_get_option( 'ast-author-info' ) && is_singular( 'post' ) ) {
astra_get_template( 'blog-pro/template/author-info.php' );
}
}
/**
* Enable/Disable Single Post Navigation
*
* Checks the customizer option `Disable Single Post Navigation` and Enable/Disable the single post navigation.
*
* @since 1.3.3
*
* @return void
*/
public function single_post_navigation_markup() {
$enable_post_navigation = astra_get_option( 'ast-single-post-navigation' );
if ( $enable_post_navigation ) {
remove_action( 'astra_entry_after', 'astra_single_post_navigation_markup' );
}
}
/**
* Add 'Date Box' in featured section
*
* @since 1.0
*
* @param string $output Post content.
* @return string content.
*/
public function date_box( $output ) {
$enable_date_box = astra_get_option( 'blog-date-box' );
$date_box_style = astra_get_option( 'blog-date-box-style' );
if ( 'astra_related_post_featured_image_after' === current_filter() ) {
$enable_date_box = apply_filters( 'astra_related_post_enable_date_box', $enable_date_box );
$date_box_style = apply_filters( 'astra_related_post_date_box_style', $date_box_style );
}
if ( $enable_date_box ) :
$time_string = '<time class="entry-date published updated" datetime="%1$s"><span class="date-month">%2$s</span> <span class="date-day">%3$s</span> <span class="date-year">%4$s</span></time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
$time_string = '<time class="entry-date published" datetime="%1$s"><span class="date-month">%2$s</span> <span class="date-day">%3$s</span> <span class="date-year">%4$s</span></time><time class="updated" datetime="%5$s">%6$s</time>';
}
$time_string = sprintf(
$time_string,
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date( 'M' ) ),
esc_html( get_the_date( 'j' ) ),
esc_html( get_the_date( 'Y' ) ),
esc_attr( get_the_modified_date( 'c' ) ),
esc_html( get_the_modified_date() )
);
/**
* Filters the Date Box time format.
*
* @since 1.5.0
*
* @param string posted date format for the posts.
*/
$posted_on = apply_filters(
'astra_date_box_time_format',
sprintf(
esc_html( '%s' ),
$time_string
)
);
ob_start();
?>
<a href="<?php echo esc_url( get_permalink() ); ?>" >
<div class="ast-date-meta <?php echo esc_attr( $date_box_style ); ?>">
<span class="posted-on"><?php echo $posted_on; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
</div>
</a>
<?php
$posted_on_data = ob_get_clean();
/**
* Filters the Date Box markup.
*
* @since 1.5.0
*
* @param string $posted_on_data the posted date markup for the posts.
*/
$output .= apply_filters( 'astra_date_box_markup', $posted_on_data );
endif;
return $output;
}
/**
* Add Body Classes
*
* @param array $classes Blog Layout Class Array.
* @return array
*/
public function add_blog_layout_class( $classes ) {
$display_date_box = astra_get_option( 'blog-date-box' );
if ( ! $display_date_box ) {
$classes[] = 'ast-no-date-box';
}
return $classes;
}
/**
* Blog Customization
*/
public function blog_customization() {
$blog_layout = astra_get_option( 'blog-layout' );
if ( 'blog-layout-1' !== $blog_layout ) {
remove_action( 'astra_entry_content_blog', 'astra_entry_content_blog_template' );
add_action( 'astra_entry_content_blog', array( $this, 'blog_template' ) );
}
}
/**
* Blog Template Markup
*/
public function blog_template() {
astra_get_template( 'blog-pro/template/' . esc_attr( astra_get_option( 'blog-layout' ) ) . '.php' );
}
/**
* Add Blog Grid Class
*
* @param array $classes Body Class Array.
* @return array
*/
public function astra_primary_class_blog_grid( $classes ) {
// Apply grid class to archive page.
if ( ( is_home() ) || is_archive() || is_search() ) {
$blog_grid = astra_get_option( 'blog-grid' );
$blog_grid_layout = astra_get_option( 'blog-grid-layout' );
$blog_layout = astra_get_option( 'blog-layout' );
if ( 'blog-layout-1' == $blog_layout ) {
$classes[] = 'ast-grid-' . esc_attr( $blog_grid );
} else {
$classes[] = 'ast-grid-' . esc_attr( $blog_grid_layout );
}
$classes = apply_filters( 'astra_primary_class_blog_grid', $classes );
}
return $classes;
}
/**
* Add Post Class Blog Grid
*
* @param array $classes Body Class Array.
* @return array
*/
public function astra_post_class_blog_grid( $classes ) {
$wp_doing_ajax = wp_doing_ajax();
if ( is_archive() || is_home() || is_search() || $wp_doing_ajax ) {
global $wp_query;
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$blog_grid = astra_get_option( 'blog-grid' );
$blog_grid_layout = astra_get_option( 'blog-grid-layout' );
$blog_layout = astra_get_option( 'blog-layout' );
$first_post_full_width = astra_get_option( 'first-post-full-width' );
$blog_masonry = astra_get_option( 'blog-masonry' );
$remove_featured_padding = astra_get_option( 'blog-featured-image-padding' );
$blog_space_bet_posts = astra_get_option( 'blog-space-bet-posts' );
if ( $wp_doing_ajax ) {
$classes[] = 'ast-col-sm-12';
$classes[] = 'ast-article-post';
}
if ( 'blog-layout-1' == $blog_layout ) {
if ( $remove_featured_padding ) {
$classes[] = 'remove-featured-img-padding';
}
if ( $blog_grid > 1 && $first_post_full_width && ! $blog_masonry && 0 == $wp_query->current_post && 1 == $paged ) {
// Feature Post.
if ( 3 == $blog_grid ) {
$classes[] = Astra_Addon_Builder_Helper::apply_flex_based_css() ? 'ast-width-md-66' : 'ast-col-md-8';
} elseif ( 4 == $blog_grid ) {
$classes[] = Astra_Addon_Builder_Helper::apply_flex_based_css() ? 'ast-width-50' : 'ast-col-md-6';
} else {
$classes[] = Astra_Addon_Builder_Helper::apply_flex_based_css() ? 'ast-grid-common-col' : 'ast-col-md-12';
}
$classes[] = 'ast-featured-post';
} else {
$classes[] = Astra_Addon_Builder_Helper::apply_flex_based_css() ? 'ast-width-md-' . ( 12 / $blog_grid ) : 'ast-col-md-' . ( 12 / $blog_grid );
}
} else {
if ( $blog_grid_layout > 1 && $first_post_full_width && ! $blog_masonry && 0 == $wp_query->current_post && 1 == $paged ) {
// Feature Post.
$classes[] = 'ast-col-md-12';
$classes[] = 'ast-featured-post';
} else {
$classes[] = Astra_Addon_Builder_Helper::apply_flex_based_css() ? 'ast-width-md-' . ( 12 / $blog_grid_layout ) : 'ast-col-md-' . ( 12 / $blog_grid_layout );
}
}
if ( true === astra_addon_builder_helper()->is_header_footer_builder_active ) {
$classes[] = 'ast-archive-post';
}
if ( $blog_space_bet_posts ) {
$classes[] = 'ast-separate-posts';
}
} elseif ( is_singular() ) {
$blog_layout = astra_get_option( 'blog-layout' );
$remove_featured_padding = astra_get_option( 'single-featured-image-padding' );
if ( 'blog-layout-1' == $blog_layout && $remove_featured_padding ) {
$classes[] = 'remove-featured-img-padding';
}
}
return $classes;
}
/**
* Add Body Classes
*
* @param array $classes Body Class Array.
* @return array
*/
public function astra_ext_blog_pro_body_classes( $classes ) {
if ( is_archive() || is_home() || is_search() ) {
global $wp_query;
$blog_layout = astra_get_option( 'blog-layout' );
$blog_masonry = astra_get_option( 'blog-masonry' );
$blog_grid = astra_get_option( 'blog-grid' );
$blog_grid_layout = astra_get_option( 'blog-grid-layout' );
$blog_pagination = astra_get_option( 'blog-pagination' );
// Masonry layout for blog.
if ( $blog_masonry && $wp_query->posts ) {
$classes[] = 'blog-masonry';
}
// Blog layout.
if ( 'blog-layout-1' == $blog_layout ) {
$classes[] = 'ast-blog-grid-' . esc_attr( $blog_grid );
} else {
$classes[] = 'ast-blog-grid-' . esc_attr( $blog_grid_layout );
}
// Blog layout.
$classes[] = 'ast-' . esc_attr( $blog_layout );
if ( 'infinite' === $blog_pagination ) {
// Pagination type.
$classes[] = 'ast-blog-pagination-type-infinite';
}
if ( 'number' === $blog_pagination ) {
$blog_pagination_style = astra_get_option( 'blog-pagination-style' );
$classes[] = 'ast-pagination-' . esc_attr( $blog_pagination_style );
}
}
return $classes;
}
/**
* Add style.
*
* @since 1.0
*
* @return void.
*/
public function add_styles() {
$author_info = astra_get_option( 'ast-author-info' );
$enable_related_posts = astra_get_option( 'enable-related-posts' );
/*** Start Path Logic */
/* Define Variables */
$uri = ASTRA_EXT_BLOG_PRO_URI . 'assets/css/';
$path = ASTRA_EXT_BLOG_PRO_DIR . 'assets/css/';
$rtl = '';
if ( is_rtl() ) {
$rtl = '-rtl';
}
/* Directory and Extension */
$file_prefix = $rtl . '.min';
$dir_name = 'minified';
if ( SCRIPT_DEBUG ) {
$file_prefix = $rtl;
$dir_name = 'unminified';
}
$css_uri = $uri . $dir_name . '/';
$css_dir = $path . $dir_name . '/';
if ( defined( 'ASTRA_THEME_HTTP2' ) && ASTRA_THEME_HTTP2 ) {
$gen_path = $css_uri;
} else {
$gen_path = $css_dir;
}
/*** End Path Logic */
/* Add style.css */
Astra_Minify::add_css( $gen_path . 'style' . $file_prefix . '.css' );
if ( $author_info ) {
Astra_Minify::add_css( $gen_path . 'post-author' . $file_prefix . '.css' );
}
if ( $enable_related_posts ) {
Astra_Minify::add_css( $gen_path . 'related-posts' . $file_prefix . '.css' );
}
/* Blog Layouts */
$blog_layout = astra_get_option( 'blog-layout' );
if ( true === Astra_Addon_Builder_Helper::apply_flex_based_css() && ( 'blog-layout-2' == $blog_layout || 'blog-layout-3' == $blog_layout ) ) {
$blog_layout = $blog_layout . '-flex';
}
Astra_Minify::add_css( $gen_path . $blog_layout . $file_prefix . '.css' );
}
/**
* Add scripts.
*
* @since 1.0
*
* @return void.
*/
public function add_scripts() {
/*** Start Path Logic */
/* Define Variables */
$uri = ASTRA_EXT_BLOG_PRO_URI . 'assets/js/';
$path = ASTRA_EXT_BLOG_PRO_DIR . 'assets/js/';
/* Directory and Extension */
$file_prefix = '.min';
$dir_name = 'minified';
if ( SCRIPT_DEBUG ) {
$file_prefix = '';
$dir_name = 'unminified';
}
$js_uri = $uri . $dir_name . '/';
$js_dir = $path . $dir_name . '/';
if ( defined( 'ASTRA_THEME_HTTP2' ) && ASTRA_THEME_HTTP2 ) {
$gen_path = $js_uri;
} else {
$gen_path = $js_dir;
}
/*** End Path Logic */
$blog_layout = astra_get_option( 'blog-layout' );
$blog_grid = astra_get_option( 'blog-grid' );
$blog_grid_layout = astra_get_option( 'blog-grid-layout' );
$astra_blog_masonry = astra_get_option( 'blog-masonry' );
if ( ( 'blog-layout-1' == $blog_layout && 1 != $blog_grid ) || ( 'blog-layout-1' != $blog_layout && 1 != $blog_grid_layout ) ) {
// Enqueue scripts.
if ( $astra_blog_masonry ) {
Astra_Minify::add_dependent_js( 'jquery' );
Astra_Minify::add_dependent_js( 'jquery-masonry' );
Astra_Minify::add_js( $gen_path . 'ast-ext-blog-pro' . $file_prefix . '.js' );
}
}
}
/**
* Frontend scripts.
*
* @since 1.0
*
* @return void.
*/
public function enqueue_frontend_scripts() {
$blog_pagination = astra_get_option( 'blog-pagination' );
/* Directory and Extension */
$file_prefix = '.min';
$dir_name = 'minified';
if ( SCRIPT_DEBUG ) {
$file_prefix = '';
$dir_name = 'unminified';
}
$js_gen_path = ASTRA_EXT_BLOG_PRO_URI . 'assets/js/' . $dir_name . '/';
$css_gen_path = ASTRA_EXT_BLOG_PRO_URI . 'assets/css/' . $dir_name . '/';
if ( astra_get_option( 'ast-auto-prev-post' ) && is_singular() ) {
if ( SCRIPT_DEBUG ) {
wp_enqueue_script( 'astra-scrollspy', $js_gen_path . 'scrollspy' . $file_prefix . '.js', array( 'jquery' ), ASTRA_EXT_VER, true );
wp_enqueue_script( 'astra-history', $js_gen_path . 'jquery-history' . $file_prefix . '.js', array( 'jquery' ), ASTRA_EXT_VER, true );
wp_enqueue_script( 'astra-single-infinite', $js_gen_path . 'single-infinite' . $file_prefix . '.js', array( 'astra-scrollspy' ), ASTRA_EXT_VER, true );
} else {
wp_enqueue_script( 'astra-single-infinite', $js_gen_path . 'single-autopost-infinite.min.js', array( 'jquery' ), ASTRA_EXT_VER, true );
}
}
// Load infinite js only if option is used.
if ( ( is_home() || is_archive() || is_search() ) && 'infinite' === $blog_pagination ) {
wp_enqueue_script( 'astra-pagination-infinite', $js_gen_path . 'pagination-infinite' . $file_prefix . '.js', array( 'jquery', 'astra-addon-js' ), ASTRA_EXT_VER, true );
}
}
/**
* Calculate reading time.
*
* @since 1.0
*
* @param int $post_id Post content.
* @return int read time.
*/
public function calculate_reading_time( $post_id ) {
$post_content = get_post_field( 'post_content', $post_id );
$stripped_content = strip_shortcodes( $post_content );
$strip_tags_content = wp_strip_all_tags( $stripped_content );
$word_count = count( preg_split( '/\s+/', $strip_tags_content ) );
$reading_time = ceil( $word_count / 220 );
return $reading_time;
}
/**
* Reading Time Meta.
*
* @since 1.3.3 Updated post reading time strings.
* @since 1.0
*
* @param string $content Post content.
* @param string $loop_count Post meta loop count.
* @param string $separator Separator text.
* @return string content
*/
public function reading_time_content( $content = '', $loop_count = '', $separator = '' ) {
$read_time = (int) $this->calculate_reading_time( get_the_ID() );
$singular_min_reading_text = apply_filters( 'astra_post_minute_of_reading_text', __( 'minute of reading', 'astra-addon' ) );
$plural_mins_reading_text = apply_filters( 'astra_post_minutes_of_reading_text', __( 'minutes of reading', 'astra-addon' ) );
$content .= ( 1 != $loop_count && '' != $content ) ? ' ' . $separator . ' ' : '';
/* translators: %1$s: $read_time the time to read the article, %2%s: $singular_min_reading_text the singular minute reading time text, %3%s: $plural_mins_reading_text the plural minutes reading time text */
$content .= '<span class="ast-reading-time">' . sprintf( _n( '%1$s %2$s', '%1$s %3$s', $read_time, 'astra-addon' ), $read_time, $singular_min_reading_text, $plural_mins_reading_text ) . '</span>'; // phpcs:ignore WordPress.WP.I18n.MismatchedPlaceholders
return $content;
}
/**
* Init action.
*
* @return void
*/
public function init_action() {
$this->single_post_add_endpoint();
if ( 'excerpt' === astra_get_option( 'blog-post-content' ) ) {
// Excerpt Filter.
add_filter( 'excerpt_length', array( $this, 'custom_excerpt_length' ) );
add_filter( 'astra_post_read_more', array( $this, 'read_more_text' ) );
add_filter( 'astra_post_read_more_class', array( $this, 'read_more_class' ) );
}
}
/**
* Single post rewrite endpoint.
*
* @return void
*/
public function single_post_add_endpoint() {
if ( astra_get_option( 'ast-auto-prev-post' ) || is_customize_preview() ) {
add_rewrite_endpoint( 'partial-prev', EP_PERMALINK );
add_action( 'template_redirect', array( $this, 'single_post_template_redirect' ) );
add_action( 'astra_before_content_partial_loop', array( $this, 'auto_prev_post_wp_bakery_compatibility' ) );
}
}
/**
* Added shortcode rendering compatibility for WP Bakery plugin.
*
* WP Bakery plugin shortcodes were not rendering when auto prev post option was enable.
*
* @return void
*/
public function auto_prev_post_wp_bakery_compatibility() {
// Make sure all vc shortcodes are loaded (needed for ajax previous post pagination).
if ( is_callable( 'WPBMap::addAllMappedShortcodes' ) ) {
WPBMap::addAllMappedShortcodes();
}
}
/**
* Single post template redirect.
*/
public function single_post_template_redirect() {
global $wp_query;
// if this is not a request for partial or a singular object then bail.
if ( ( isset( $wp_query->query_vars['partial-prev'] ) || isset( $_GET['partial-prev'] ) ) && is_singular() ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
// include custom template.
include ASTRA_EXT_BLOG_PRO_DIR . '/template/content-partial.php';
exit;
}
}
/**
* Excerpt count.
*
* @param int $length default count of words.
* @return int count of words
*/
public function custom_excerpt_length( $length ) {
$excerpt_length = astra_get_option( 'blog-excerpt-count' );
if ( '' != $excerpt_length ) {
$length = $excerpt_length;
}
return $length;
}
/**
* Read more text.
*
* @param string $text default read more text.
* @return string read more text
*/
public function read_more_text( $text ) {
$read_more = astra_get_option( 'blog-read-more-text' );
if ( '' != $read_more ) {
$text = $read_more;
}
return $text;
}
/**
* Read more class.
*
* @param array $class default classes.
* @return array classes
*/
public function read_more_class( $class ) {
$read_more_button = astra_get_option( 'blog-read-more-as-button' );
if ( $read_more_button ) {
$class[] = 'ast-button';
}
return $class;
}
}
Expand full source code Collapse full source code View on Trac
Methods
- __construct — Constructor
- add_blog_layout_class — Add Body Classes
- add_fonts — Enqueue google fonts.
- add_scripts — Add scripts.
- add_styles — Add style.
- astra_blog_pagination — Astra Blog Pagination
- astra_ext_blog_pro_body_classes — Add Body Classes
- astra_pagination_infinite — Infinite Posts Show on scroll
- astra_post_class_blog_grid — Add Post Class Blog Grid
- astra_primary_class_blog_grid — Add Blog Grid Class
- astra_render_author_box_sharing — Render Author Box sharing.
- astra_render_social_sharing — Render social sharing.
- astra_social_sharing — Social sharing.
- author_box_within_container — Function to get author info box within the post container.
- author_info_markup — Function to get author info for default post only
- auto_prev_post_wp_bakery_compatibility — Added shortcode rendering compatibility for WP Bakery plugin.
- blog_customization — Blog Customization
- blog_js_localize — Infinite Posts Show on scroll
- blog_post_filter — Blog Post Filter.
- blog_post_filter_markup — Blog Post Filter.
- blog_template — Blog Template Markup
- calculate_reading_time — Calculate reading time.
- custom_excerpt_length — Excerpt count.
- date_box — Add 'Date Box' in featured section
- enqueue_frontend_scripts — Frontend scripts.
- get_instance — Initiator
- init_action — Init action.
- is_ajax_pagination — Check if ajax pagination is calling.
- read_more_class — Read more class.
- read_more_text — Read more text.
- reading_time_content — Reading Time Meta.
- single_post_add_endpoint — Single post rewrite endpoint.
- single_post_navigation_markup — Enable/Disable Single Post Navigation
- single_post_template_redirect — Single post template redirect.