HOME


Mini Shell 1.0
DIR: /proc/self/root/home/dhnidqcz/pragmaticsng.org/wp-content/themes/memberlite/inc/
Upload File :
Current File : //proc/self/root/home/dhnidqcz/pragmaticsng.org/wp-content/themes/memberlite/inc/extras.php
<?php
/**
 * Custom functions that act independently of the theme templates
 *
 * Eventually, some of the functionality here could be replaced by core features
 *
 * @package Memberlite
 */

/**
 * Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link.
 *
 * @param array $args Configuration arguments.
 * @return array
 */
function memberlite_page_menu_args( $args ) {
	$args['show_home'] = true;
	return $args;
}
add_filter( 'wp_page_menu_args', 'memberlite_page_menu_args' );

/**
 * Adds custom classes to the array of body classes.
 *
 * @param array $classes Classes for the body element.
 * @return array
 */
function memberlite_body_classes( $classes ) {
	global $memberlite_defaults;

	// sidebar classes
	if ( ! is_page_template( 'templates/fluid-width.php' ) && ! memberlite_is_blog() ) {
		$classes[] = get_theme_mod( 'sidebar_location', $memberlite_defaults['sidebar_location'] );
	}
	if ( memberlite_is_blog() ) {
		$classes[] = get_theme_mod( 'sidebar_location_blog', $memberlite_defaults['sidebar_location_blog'] );
		$classes[] = 'content-archives-' . get_theme_mod( 'content_archives', $memberlite_defaults['content_archives'] );
	}
	if ( is_page_template( 'templates/sidebar-content.php' ) ) {
		$classes[] = 'sidebar-content';
	}
	if ( is_page_template( 'templates/content-sidebar.php' ) ) {
		$classes[] = 'content-sidebar';
	}

	// color scheme class
	$classes[] = 'scheme_' . get_theme_mod( 'memberlite_color_scheme', $memberlite_defaults['memberlite_color_scheme'] );

	// other classes
	if ( is_multi_author() ) {
		$classes[] = 'group-blog';
	}
	if ( is_page_template( 'templates/landing.php' ) ) {
		$classes[] = 'landing';
	}
	if ( is_page_template( 'templates/interstitial.php' ) ) {
		$classes[] = 'interstitial';
	}

	return $classes;
}
add_filter( 'body_class', 'memberlite_body_classes' );

/* Get main and sidebar columns width from theme mod or defaults. */
function memberlite_getColumnsRatio( $location = null ) {
	global $memberlite_defaults;

	// Get the values as set in customizer.
	$columns_ratio              = get_theme_mod( 'columns_ratio', $memberlite_defaults['columns_ratio'] );
	$columns_ratio_header       = get_theme_mod( 'columns_ratio_header', $memberlite_defaults['columns_ratio_header'] );
	$columns_ratio_array        = explode( '-', $columns_ratio );
	$columns_ratio_header_array = explode( '-', $columns_ratio_header );

	// Get the page template slug to use in checking which ratio below.
	$page_template_slug = get_page_template_slug();

	if ( $location == 'sidebar' ) {
		$r = $columns_ratio_array[1];
	} elseif ( $location == 'header-right' ) {
		$r = $columns_ratio_header_array[1];
	} elseif ( $location == 'header-left' ) {
		$r = $columns_ratio_header_array[0];
	} elseif ( is_front_page() && empty( $page_template_slug ) && 'posts' != get_option( 'show_on_front' ) ||
		is_page_template( 'templates/full-width.php' ) ||
		is_page_template( 'templates/interstitial.php' )
	) {
		$r = '12';
	} elseif ( is_page_template( 'templates/narrow-width.php' ) ) {
		$r = '8 medium-offset-2';
	} elseif ( ( $location == 'masthead' ) && is_page_template( 'templates/narrow-width.php' ) ) {
		$r = '8 medium-offset-2';
	} elseif ( $location == 'masthead' ) {
		$r = '12';
	} else {
		$r = $columns_ratio_array[0];
	}

	// Filter to allow child themes and plugins to modify column width.
	$r = apply_filters( 'memberlite_columns_ratio', $r, $location );

	return $r;
}

function memberlite_sidebar_location_none_columns_ratio( $r, $location ) {
	global $memberlite_defaults;

	if ( ! empty( $location ) ) {
		return $r;
	}

	if ( is_page() ) {
		$sidebar_location = get_theme_mod( 'sidebar_location', $memberlite_defaults['sidebar_location'] );
		if ( $sidebar_location === 'sidebar-none' && empty( is_page_template() ) ) {
			$r = '8 medium-offset-2';
		}
	} elseif ( memberlite_is_blog() || is_search() ) {
		$sidebar_location = get_theme_mod( 'sidebar_location_blog', $memberlite_defaults['sidebar_location_blog'] );
		$content_archives = get_theme_mod( 'content_archives', $memberlite_defaults['content_archives'] );
		if ( $content_archives === 'grid' && ! is_singular() ) {
			$r = '12';
		} elseif ( $sidebar_location === 'sidebar-blog-none' ) {
			$r = '8 medium-offset-2';
		}
	}

	return $r;
}
add_filter( 'memberlite_columns_ratio', 'memberlite_sidebar_location_none_columns_ratio', 10, 2 );

/**
 * Hide the sidebar if the theme option is set to none.
 *
 */
function memberlite_sidebar_none_get_sidebar( $name ) {
	global $memberlite_defaults;

	if ( is_page() ) {
		$sidebar_location = get_theme_mod( 'sidebar_location', $memberlite_defaults['sidebar_location'] );
		if ( $sidebar_location === 'sidebar-none' && empty( is_page_template() ) ) {
			$name = false;
		}
	} elseif ( memberlite_is_blog() || is_search() ) {
		$sidebar_location = get_theme_mod( 'sidebar_location_blog', $memberlite_defaults['sidebar_location_blog'] );
		if ( $sidebar_location === 'sidebar-blog-none' ) {
			$name = false;
		}
	}

	return $name;
}
add_filter( 'memberlite_get_sidebar', 'memberlite_sidebar_none_get_sidebar' );

/**
 * Get the width of a thumbnail.
 */
function memberlite_getPostThumbnailWidth( $post_id = null ) {
	// get thumbnail from post_id
	$attachment_id = get_post_thumbnail_id( $post_id );
	if ( empty( $attachment_id ) ) {
		return false;   // no thumbnail
	}

	// get attachment src, width, and height
	$attachment = wp_get_attachment_image_src( $attachment_id, 'full' );

	// make sure width is there
	if ( is_array( $attachment ) && ! empty( $attachment[1] ) ) {
		return $attachment[1];
	} else {
		return false;
	}
}

/**
 * Change the excerpt more string
 */
function memberlite_excerpt_more( $more ) {
	global $post;

	if ( ! is_admin() ) {
		$more = ' <a href="' . esc_url( get_permalink( $post->ID ) ) . '" rel="nofollow">' . esc_html( __( '(more...)', 'memberlite' ) ) . '</a>';
	}

	return $more;
}
add_filter( 'excerpt_more', 'memberlite_excerpt_more' );

/**
 * Return the post URL.
 *
 * @uses get_url_in_content() to get the URL in the post meta (if it exists) or
 * the first link found in the post content.
 *
 * Falls back to the post permalink if no URL is found in the post.
 *
 * @return string The Link format URL.
 */
function memberlite_get_link_url() {
	$content = get_the_content();
	$has_url = get_url_in_content( $content );

	return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', esc_url( get_permalink() ) );
}

/**
 * Some content filters for excerpts on pages - used in Theme Templates
 */
function memberlite_get_the_content_after_more( $content = null ) {
	if ( $content === null ) {
		$content = get_the_content();
	}
	$moretag = preg_match( '/\<span id="more-[0-9]*"\>\<\/span\>/', $content, $matches );
	if ( ! $moretag ) {
		$moretag = preg_match( '/(\<\!\-\-more\-\-\>)/', $content, $matches );
	}
	if ( $moretag ) {
		$morespan     = $matches[0];
		$morespan_pos = strpos( $content, $morespan );
		$newcontent   = substr( $content, $morespan_pos + strlen( $morespan ), strlen( $content ) - strlen( $morespan ) );
		$newcontent   = apply_filters( 'the_content', $newcontent );
		return $newcontent;
	} else {
		return '';
	}
}

function memberlite_get_the_content_before_more( $content = null ) {
	if ( $content === null ) {
		$content = get_the_content();
	}

	$moretag = preg_match( '/\<span id="more-[0-9]*"\>\<\/span\>/', $content, $matches );
	if ( ! $moretag ) {
		$moretag = preg_match( '/(\<\!\-\-more\-\-\>)/', $content, $matches );
	}
	if ( $moretag ) {
		$morespan     = $matches[0];
		$morespan_pos = strpos( $content, $morespan );
		$newcontent   = substr( $content, 0, $morespan_pos );
		$newcontent   = apply_filters( 'the_content', $newcontent );
		return $newcontent;
	} else {
		return $content;
	}
}

function memberlite_the_content( $content ) {
	global $memberlite_defaults;

	// Identify where the more tag is (block editor or class editor).
	$moretag = preg_match( '/\<span id="more-[0-9]*"\>\<\/span\>/', $content, $matches );
	if ( ! $moretag ) {
		$moretag = preg_match( '/(\<\!\-\-more\-\-\>)/', $content, $matches );
	}

	// Optionally include the featured image.
	$image_content = memberlite_loop_image();

	// Adjust the format of the excerpt and content, insert block image if set in theme options.
	if ( ! empty( $moretag ) ) {
		$morespan = $matches[0];
		$morespan_pos = strpos( $content, $morespan );
		$leadcontent = substr( $content, 0, $morespan_pos );

		// Add the block image between the "excerpt" and the rest of the content.
		if ( ! empty( $image_content ) ) {
			$leadcontent .= $image_content;
		}

		/**
		 * Filter to turn off the enlarged/enhanced excerpt text for a single post with a separator.
		 *
		 * @since 4.5.4
		 *
		 * @param bool $memberlite_excerpt_larger Enlarge/enhance the excerpt text on a single post.
		 * @return bool $memberlite_excerpt_larger
		 *
		 */
		$memberlite_excerpt_larger = apply_filters( 'memberlite_excerpt_larger', true);
		if ( ! empty( $memberlite_excerpt_larger ) ) {
			$leadcontent = '<div class="lead">' . $leadcontent . '<hr /></div>';
		}

		// Add the content after the $more tag to the $content.
		$newcontent = substr( $content, $morespan_pos + strlen( $morespan ), strlen( $content ) - strlen( $morespan ) );

		// The new $content variable.
		$content = $leadcontent . $newcontent;
	} elseif ( ! empty( $image_content ) && is_singular() ) {
		// No excerpt. Add the block image before the content if theme mod is set to show_block.
		$content = $image_content . $content;
	}

	// The returned, reformatted $content.
	return $content;
}
add_filter( 'the_content', 'memberlite_the_content' );

/**
 * Show the excerpt for a post whether it is specified,
 * implied by a more tag, or generated.
 */
function memberlite_the_excerpt() {
	global $post;

	$content_arr = get_extended( $post->post_content );
	if ( empty( $content_arr['extended'] ) ) {
		// There is no custom excerpt designated, show the_excerpt()
		the_excerpt();
	} else {
		// There is an excerpt designated by the <!--more--> tag, show that.
		echo wp_kses_post( apply_filters( 'the_content', $content_arr['main'] ) );
	}

	// Optionally include the featured image.
	$image_content = memberlite_loop_image();
	if ( ! empty ( $image_content ) ) {
		$loop_image_allowed_html = array(
			'img' => array(
				'alt' => array(),
				'class' => array(),
				'height' => array(),
				'loading' => array(),
				'sizes' => array(),
				'src' => array(),
				'srcset' => array(),
				'title' => array(),
				'width' => array()
			)
		);
		echo wp_kses( $image_content, $loop_image_allowed_html );
	}
}

/**
 * Show the full post content.
 * Override the $more global so full content shows on archives/etc.
 * Despite warnings in theme checks, this is the approved way of
 * doing this.
 */
function memberlite_more_content() {
	global $more;
	$more = 1;
	the_content();
}

/**
 * Get the featured block image to insert into the post content.
 * 
 */
function memberlite_loop_image() {
	global $memberlite_defaults;

	// Get the theme setting for loop images.
	$memberlite_loop_images = get_theme_mod( 'memberlite_loop_images', $memberlite_defaults['memberlite_loop_images'] );

	// Return if the theme mod isn't set to show block images.
	if ( $memberlite_loop_images != 'show_block' ) {
		return false;
	}

	/**
	 * Filter to specify what post types to include a block image for based on theme setting.
	 *
	 * @since 4.5.4
	 *
	 * @param array $memberlite_loop_images_post_types An array of post types to include a featured image for based on theme setting.
	 * @return array $memberlite_loop_images_post_types
	 *
	 */
	$memberlite_loop_images_post_types = apply_filters( 'memberlite_loop_images_post_types', array( 'post') );

	// Check if the current post's post_type should show an image.
	if ( ! empty( $memberlite_loop_images_post_types ) && ( ! in_array( get_post_type(), $memberlite_loop_images_post_types ) ) ) {
		return false;
	} else {
		$image_content = get_the_post_thumbnail( null, 'large' );
	}
	return $image_content;
}

function memberlite_page_title( $echo = true ) {
	global $post;

	// capture output
	ob_start();

	// figure out page title
	if ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) { ?>
		<h1 class="page-title">
		<?php
		if ( is_shop() ) {
			echo esc_html( get_the_title( get_option( 'woocommerce_shop_page_id' ) ) );
		} elseif ( is_archive() ) {
			single_cat_title();
		} else {
			the_title();
		}
		?>
		</h1>
			<?php
			// Show an optional term description.
			$term_description = woocommerce_product_archive_description();
			if ( ! empty( $term_description ) ) :
				printf( '<div class="taxonomy-description">%s</div>', wp_kses_post( $term_description ) );
			endif;
			woocommerce_taxonomy_archive_description();
	} elseif ( is_post_type_archive() ) {
		?>
		<h1 class="page-title"><?php the_archive_title(); ?></h1>
		<?php
	} elseif ( function_exists( 'is_bbpress' ) && ( is_bbpress() || bbp_is_single_user() ) ) {
		?>
		<h1 class="page-title">
		<?php
		if ( bbp_is_search_results() ) {
			/* translators: %s: bbPress forum search terms */
			printf( esc_html__( 'Forum Search Results for: %s', 'memberlite' ), '<span>' . esc_html( bbp_get_search_terms() ) . '</span>' );
		} elseif ( bbp_is_search() ) {
			esc_html_e( 'Forum Search', 'memberlite' );
		} elseif ( bbp_is_single_forum() || bbp_is_single_topic() ) {
			the_title();
		} elseif ( bbp_is_single_user() ) {
			/* translators: %s: bbPress user profile display name */
			echo sprintf( esc_html__( '%s\'s Profile', 'memberlite' ), esc_html( get_userdata( bbp_get_user_id() )->display_name ) );
		} else {
			esc_html_e( 'Forums', 'memberlite' );
		}
		?>
		</h1>
		<?php
	} elseif ( is_author() || is_tag() || is_archive() ) {
		$archive_title = get_the_archive_title();
		$archive_description = get_the_archive_description();

		if ( ! empty( $archive_title ) ) { ?>
			<h1 class="page-title">
				<?php echo wp_kses_post( $archive_title ); ?>
			</h1>
			<?php
		}

		if ( ! empty( $archive_description ) ) { ?>
			<div class="taxonomy-description">
				<?php echo wp_kses_post( $archive_description ); ?>
			</div>
			<?php
		}

	} elseif ( is_search() ) {
		?>
		<h1 class="page-title">
			<?php
				/* translators: %s: search keywords */
				printf( esc_html__( 'Search Results for: %s', 'memberlite' ), '<span>' . get_search_query() . '</span>' );
			?>
		</h1>
		<?php
	} elseif ( is_singular( 'post' ) ) { ?>
		<div class="masthead-post-byline">
			<?php
				$author_avatar_allowed_html = array(
					'div' => array(
						'class' => array(),
					),
					'img' => array(
						'alt' => array(),
						'class' => array(),
						'height' => array(),
						'loading' => array(),
						'src' => array(),
						'title' => array(),
						'width' => array()
					)
				);
				echo wp_kses( memberlite_get_author_avatar( $post->post_author ), $author_avatar_allowed_html );
			?>
			<div class="entry-header-content">
				<?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
				<?php
					$memberlite_get_entry_meta_before = memberlite_get_entry_meta( $post, 'before' );
				if ( ! empty( $memberlite_get_entry_meta_before ) ) {
					?>
					<p class="entry-meta">
						<?php echo Memberlite_Customize::sanitize_text_with_links( memberlite_get_entry_meta( $post, 'before' ) ); ?>
						</p><!-- .entry-meta -->
						<?php
				}
				?>
			</div> <!-- .entry-header-content -->
		</div>
		<?php
	} elseif ( is_home() ) {
		?>
		<h1 class="page-title">
		<?php
		if ( get_option( 'page_for_posts' ) ) {
			echo esc_html( get_the_title( get_option( 'page_for_posts' ) ) );
		}
		?>
		</h1>
		<?php
	} elseif ( is_404() ) {
		echo '<h1 class="entry-title">' . esc_html__( '404: Page Not Found', 'memberlite' ) . '</h1>';
	} else {
		the_title( '<h1 class="entry-title">', '</h1>' );
	}

	// get captured output
	$page_title_html = ob_get_contents();
	ob_end_clean();

	// filter
	$page_title_html = apply_filters( 'memberlite_page_title', $page_title_html );

	if ( $echo ) {
		echo wp_kses_post( $page_title_html );
	}

	return $page_title_html;
}

/**
 * Are we on a "blog" page?
 */
function memberlite_is_blog() {
	$is_blog = ( is_home() || is_singular( 'post' ) || ( is_archive() && ! is_post_type_archive() && ! is_tax() ) );

	$is_blog = apply_filters( 'memberlite_is_blog', $is_blog );

	return $is_blog;
}

function memberlite_nav_menu_submenu() {
	if ( memberlite_is_blog() ) {
		$current_post = get_post( get_option( 'page_for_posts' ) );
	} else {
		$current_post = get_queried_object();
	}

	// Build the pages array
	if ( ! empty( $current_post ) && ! empty( $current_post->post_parent ) ) {
		$exclude   = get_post_meta( $current_post->ID, 'exclude', true );
		$ancestors = get_post_ancestors( $current_post );
		if ( ! empty( $ancestors ) ) {
			$pagemenuid = end( $ancestors );
		} else {
			$pagemenuid = $current_post->ID;
		}
		/**
		 * Filter to set the top level page to generate the submenu.
		 *
		 * @param string $pagemenuid The post ID of the page used to generate the submenu. Defaults to the post's oldest ancestor.
		 * @param array $ancestors An array of post IDs for the ancestors of the current post.
		 */
		$pagemenuid = apply_filters( 'memberlite_nav_menu_submenu_pagemenuid', $pagemenuid, $ancestors );
		$children   = wp_list_pages( 'title_li=&child_of=' . $pagemenuid . '&exclude=' . $exclude . '&echo=0&sort_column=menu_order,post_title' );
		$titlenamer = get_the_title( $pagemenuid );
		$titlelink  = get_permalink( $pagemenuid );
	} elseif( ! empty( $current_post->ID ) )  {
		$exclude    = '';
		$children   = wp_list_pages( 'title_li=&child_of=' . $current_post->ID . '&exclude=' . $exclude . '&echo=0&sort_column=menu_order,post_title' );
		$titlenamer = get_the_title( $current_post->ID );
		$titlelink  = get_permalink( $current_post->ID );
	}

	// Display the nav menu
	if ( ! empty( $children ) ) {
	?>
		<aside id="nav_menu-submenu" class="widget widget_nav_menu">
			<h3 class="widget-title"><a
			<?php
			if ( ! empty( $pagemenuid ) && is_page( $pagemenuid ) ) {
?>
 class="active"<?php } ?> href="<?php echo esc_url( $titlelink ); ?>"><?php echo esc_html( $titlenamer ); ?></a></h3>
			<ul class="menu">
				<?php echo wp_kses_post( $children ); ?>
			</ul>
		</aside> <!-- end widget -->
	<?php
	}
}

function memberlite_get_widget_areas() {
	$widget_areas = array();

	if ( is_page() ) {
		// Add the submenu widget to the sidebar on Pages (not a real widget area; handled in memberlite_nav_menu_submenu() )
		$widget_areas[] = 'memberlite_nav_menu_submenu';

		// Add the 'Pages' sidebar
		$widget_areas[] = 'sidebar-1';
	} elseif ( memberlite_is_blog() ) {
		// Add the submenu widget to the sidebar (not a real widget area; handled in memberlite_nav_menu_submenu() )
		$widget_areas[] = 'memberlite_nav_menu_submenu';

		// Add the 'Posts and Archives' sidebar
		$widget_areas[] = 'sidebar-2';
	} else {
		// Add the 'Posts and Archives' sidebar
		$widget_areas[] = 'sidebar-2';
	}

	// Filter to allow customization of the array of widget areas
	$widget_areas = apply_filters( 'memberlite_get_widget_areas', $widget_areas );

	return $widget_areas;
}

/* Customizes the bbp_breadcrumb output */
function memberlite_bbp_breadcrumb( $args ) {
	global $memberlite_defaults;
	$args = array(
		'sep'       => get_theme_mod( 'delimiter', $memberlite_defaults['delimiter'] ),
		'home_text' => __( 'Home', 'memberlite' ),
		'before'    => '',
		'after'     => '',
	);
	return $args;
}
add_filter( 'bbp_before_get_breadcrumb_parse_args', 'memberlite_bbp_breadcrumb' );

/* Removes bbp_breadcrumb from bbpress templates */
add_filter( 'bbp_no_breadcrumb', '__return_true' );

function memberlite_getBreadcrumbs() {
	global $posts, $post, $memberlite_defaults;
	$page_breadcrumbs       = get_theme_mod( 'page_breadcrumbs', false );
	$post_breadcrumbs       = get_theme_mod( 'post_breadcrumbs', false );
	$archive_breadcrumbs    = get_theme_mod( 'archive_breadcrumbs', false );
	$attachment_breadcrumbs = get_theme_mod( 'attachment_breadcrumbs', false );
	$search_breadcrumbs     = get_theme_mod( 'search_breadcrumbs', false );
	$profile_breadcrumbs    = get_theme_mod( 'profile_breadcrumbs', false );
	$show_breadcrumbs       = ( '' != $page_breadcrumbs
		|| '' != $post_breadcrumbs
		|| '' != $archive_breadcrumbs
		|| '' != $attachment_breadcrumbs
		|| '' != $search_breadcrumbs
		|| '' != $profile_breadcrumbs
	) ? true : false;

	$memberlite_show_breadcrumbs = apply_filters( 'memberlite_show_breadcrumbs', true );

	if ( $memberlite_show_breadcrumbs ) {
		$memberlite_delimiter = get_theme_mod( 'delimiter', $memberlite_defaults['delimiter'] );

		$memberlite_hide_home_breadcrumb = apply_filters( 'memberlite_hide_home_breadcrumb', false );

		if ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) {
			woocommerce_breadcrumb();
		} elseif ( function_exists( 'is_bbpress' ) && is_bbpress() ) { ?>
			<nav class="memberlite-breadcrumb" itemprop="breadcrumb">
			<?php
				/* Displays bbp_breadcrumb in theme masthead */
				remove_filter( 'bbp_no_breadcrumb', '__return_true' );
				echo wp_kses_post( bbp_breadcrumb() );
				add_filter( 'bbp_no_breadcrumb', '__return_true' );
			?>
			</nav>
		<?php } elseif ( is_attachment() && '' != $attachment_breadcrumbs ) { ?>
			<nav class="memberlite-breadcrumb" itemprop="breadcrumb">
				<?php if ( empty( $memberlite_hide_home_breadcrumb ) ) { ?>
					<a href="<?php echo esc_url( home_url() ); ?>"><?php esc_html_e( 'Home', 'memberlite' ); ?></a>
					<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
				<?php } ?>
				<?php
					global $post;
					$parent_id   = $post->post_parent;
					$breadcrumbs = array();
				while ( $parent_id ) {
					$page          = get_page( $parent_id );
					$breadcrumbs[] = '<a href="' . get_permalink( $page->ID ) . '" title="">' . get_the_title( $page->ID ) . '</a><span class="sep">' . $memberlite_defaults['delimiter'] . '</span>';
					$parent_id     = $page->post_parent;
				}
					$breadcrumbs = array_reverse( $breadcrumbs );
				foreach ( $breadcrumbs as $crumb ) {
					echo wp_kses_post( $crumb );
				}
				?>
				<span class="current_page_item"><?php the_title(); ?></span>
			</nav>
		<?php } elseif ( is_page() && ! is_front_page() && ! is_attachment() && '' != $page_breadcrumbs ) { ?>
			<nav class="memberlite-breadcrumb" itemprop="breadcrumb">
				<?php if ( empty( $memberlite_hide_home_breadcrumb ) ) { ?>
					<a href="<?php echo esc_url( home_url() ); ?>"><?php esc_html_e( 'Home', 'memberlite' ); ?></a>
					<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
				<?php } ?>
				<?php
					$breadcrumbs = get_post_ancestors( $post->ID );
				if ( ! empty( $breadcrumbs ) ) {
					$breadcrumbs = array_reverse( $breadcrumbs );
					foreach ( $breadcrumbs as $crumb ) {
					?>
							<a href="<?php echo esc_url( get_permalink( $crumb ) ); ?>"><?php echo esc_html( get_the_title( $crumb ) ); ?></a>
							<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
						<?php
					}
				}
				?>
				<?php
				if ( function_exists( 'pmpro_getOption' ) && is_page( array( pmpro_getOption( 'cancel_page_id' ), pmpro_getOption( 'billing_page_id' ), pmpro_getOption( 'confirmation_page_id' ), pmpro_getOption( 'invoice_page_id' ) ) ) && ! in_array( pmpro_getOption( 'account_page_id' ), get_post_ancestors( $post->ID ) ) ) {
				?>
					<a href="<?php echo esc_url( get_permalink( pmpro_getOption( 'account_page_id' ) ) ); ?>"><?php echo esc_html( get_the_title( pmpro_getOption( 'account_page_id' ) ) ); ?></a>
					<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
					<?php
				}
				?>
				<span class="current_page_item"><?php the_title(); ?></span>
			</nav>
		<?php } elseif ( is_post_type_archive() && '' != $archive_breadcrumbs ) { ?>
			<nav class="memberlite-breadcrumb" itemprop="breadcrumb">
				<?php if ( empty( $memberlite_hide_home_breadcrumb ) ) { ?>
					<a href="<?php echo esc_url( home_url() ); ?>"><?php esc_html_e( 'Home', 'memberlite' ); ?></a>
					<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
				<?php } ?>
				<?php
				$post_type = get_post_type_object( get_query_var( 'post_type' ) );
				echo '<span class="current_page_item">' . esc_html( $post_type->labels->name ) . '</span>';
			?>
			</nav>
		<?php } elseif ( ( ( is_author() || is_tag() || is_archive() ) ) && '' != $archive_breadcrumbs ) { ?>
			<nav class="memberlite-breadcrumb" itemprop="breadcrumb">
				<?php if ( empty( $memberlite_hide_home_breadcrumb ) ) { ?>
					<a href="<?php echo esc_url( home_url() ); ?>"><?php esc_html_e( 'Home', 'memberlite' ); ?></a>
					<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
				<?php } ?>
				<?php
				if ( is_tax() ) {
					$queried_object = get_queried_object();
					$term_taxonomy  = $queried_object->taxonomy;
					$taxonomy       = get_taxonomy( $term_taxonomy );
				}
				if ( is_tax() && count( $taxonomy->object_type ) === 1 ) {
					$post_type = get_post_type_object( $taxonomy->object_type[0] );
					?>
					<a href="<?php echo esc_url( get_post_type_archive_link( $taxonomy->object_type[0] ) ); ?>"><?php echo esc_html( $post_type->labels->name ); ?></a>
						<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
						<?php
				} elseif ( get_option( 'page_for_posts' ) ) { ?>
						<a href="<?php echo esc_url( get_permalink( get_option( 'page_for_posts' ) ) ); ?>"><?php echo esc_html( get_the_title( get_option( 'page_for_posts' ) ) ); ?></a>
						<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
						<?php
				} ?>

				<?php
					if ( is_category() ) :
						echo '<span class="current_page_item">' . single_cat_title( '', false ) . '</span>';

					elseif ( is_tag() ) :
						$current_tag = single_tag_title( '', false );
						/* translators: %s: current tag archive's single title */
						printf( esc_html__( 'Posts Tagged: %s', 'memberlite' ), '<span class="current_page_item">' . esc_html( $current_tag ) . '</span>' );

					elseif ( is_author() ) :
						/* translators: %s: current author archive's name */
						printf( esc_html__( 'Author: %s', 'memberlite' ), '<span class="vcard current_page_item">' . get_the_author() . '</span>' );

					elseif ( is_day() ) :
						/* translators: %s: day for the viewed archive */
						printf( esc_html__( 'Day: %s', 'memberlite' ), '<span class="current_page_item">' . get_the_date() . '</span>' );

					elseif ( is_month() ) :
						/* translators: %s: month for the viewed archive */
						printf( esc_html__( 'Month: %s', 'memberlite' ), '<span class="current_page_item">' . get_the_date( _x( 'F Y', 'monthly archives date format', 'memberlite' ) ) . '</span>' );

					elseif ( is_year() ) :
						/* translators: %s: year for the viewed archive */
						printf( esc_html__( 'Year: %s', 'memberlite' ), '<span class="current_page_item">' . get_the_date( _x( 'Y', 'yearly archives date format', 'memberlite' ) ) . '</span>' );

					elseif ( is_tax( 'post_format', 'post-format-aside' ) ) :
						echo '<span class="current_page_item">' . esc_html__( 'Asides', 'memberlite' ) . '</span>';

					elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) :
						echo '<span class="current_page_item">' . esc_html__( 'Galleries', 'memberlite' ) . '</span>';

					elseif ( is_tax( 'post_format', 'post-format-image' ) ) :
						echo '<span class="current_page_item">' . esc_html__( 'Images', 'memberlite' ) . '</span>';

					elseif ( is_tax( 'post_format', 'post-format-video' ) ) :
						echo '<span class="current_page_item">' . esc_html__( 'Videos', 'memberlite' ) . '</span>';

					elseif ( is_tax( 'post_format', 'post-format-quote' ) ) :
						echo '<span class="current_page_item">' . esc_html__( 'Quotes', 'memberlite' ) . '</span>';

					elseif ( is_tax( 'post_format', 'post-format-link' ) ) :
						echo '<span class="current_page_item">' . esc_html__( 'Links', 'memberlite' ) . '</span>';

					elseif ( is_tax( 'post_format', 'post-format-status' ) ) :
						echo '<span class="current_page_item">' . esc_html__( 'Statuses', 'memberlite' ) . '</span>';

					elseif ( is_tax( 'post_format', 'post-format-audio' ) ) :
						echo '<span class="current_page_item">' . esc_html__( 'Audios', 'memberlite' ) . '</span>';

					elseif ( is_tax( 'post_format', 'post-format-chat' ) ) :
						echo '<span class="current_page_item">' . esc_html__( 'Chats', 'memberlite' ) . '</span>';

					elseif ( is_tax( ) ) :
						echo '<span class="current_page_item">' . esc_html( single_term_title( '', false ) ) . '</span>';

					else :
						echo '<span class="current_page_item">' . esc_html__( 'Archives', 'memberlite' ) . '</span>';

					endif;
				?></span>
			</nav>
		<?php } elseif ( is_singular( array( 'post' ) ) && '' != $post_breadcrumbs ) { ?>
			<nav class="memberlite-breadcrumb" itemprop="breadcrumb">
				<?php if ( empty( $memberlite_hide_home_breadcrumb ) ) { ?>
					<a href="<?php echo esc_url( home_url() ); ?>"><?php esc_html_e( 'Home', 'memberlite' ); ?></a>
					<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
				<?php } ?>
				<?php if ( get_option( 'page_for_posts' ) ) { ?>
					<a href="<?php echo esc_url( get_permalink( get_option( 'page_for_posts' ) ) ); ?>"><?php echo esc_html( get_the_title( get_option( 'page_for_posts' ) ) ); ?></a>
					<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
				<?php } ?>
				<span class="current_page_item"><?php the_title(); ?></span>
			</nav>
		<?php } elseif ( is_single() && '' != $post_breadcrumbs ) {
			$post_type_object = get_post_type_object( get_post_type( $post ) );
			?>
			<nav class="memberlite-breadcrumb" itemprop="breadcrumb">
				<?php if ( empty( $memberlite_hide_home_breadcrumb ) ) { ?>
					<a href="<?php echo esc_url( home_url() ); ?>"><?php esc_html_e( 'Home', 'memberlite' ); ?></a>
				<?php } ?>
				<?php if ( $post_type_object->has_archive == true ) { ?>
					<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
					<a href="<?php echo esc_url( get_post_type_archive_link( get_post_type( $post ) ) ); ?>"><?php echo esc_html( $post_type_object->labels->name ); ?></a>
				<?php } ?>
				<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
				<span class="current_page_item"><?php the_title(); ?></span>
			</nav>
		<?php } elseif ( is_search() && '' != $search_breadcrumbs ) { ?>
			<nav class="memberlite-breadcrumb" itemprop="breadcrumb">
				<?php if ( empty( $memberlite_hide_home_breadcrumb ) ) { ?>
					<a href="<?php echo esc_url( home_url() ); ?>"><?php esc_html_e( 'Home', 'memberlite' ); ?></a>
					<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
				<?php } ?>
				<?php
				if ( get_option( 'page_for_posts' ) ) {
					?>
					<a href="<?php echo esc_url( get_permalink( get_option( 'page_for_posts' ) ) ); ?>"><?php echo esc_html( get_the_title( get_option( 'page_for_posts' ) ) ); ?></a>
						<span class="sep"><?php echo esc_html( $memberlite_delimiter ); ?></span>
						<?php
				}
				?>
				<?php esc_html_e( 'Search Results For', 'memberlite' ); ?> '<?php the_search_query(); ?>'
			</nav>
		<?php
}
	}
}

function memberlite_should_show_banner_image( $post_id = null ) {
	global $memberlite_defaults;

	// default to global post
	if ( empty( $post_id ) ) {
		global $post;
		$post_id = $post->ID;
	}

	// no post, no show
	if ( empty( $post_id ) ) {
		$r = false;
	} else {
		// Check if we should show the banner image in the loop based on customizer setting
		$memberlite_loop_images = get_theme_mod( 'memberlite_loop_images', $memberlite_defaults['memberlite_loop_images'] );
		if ( ( in_the_loop() && ( $memberlite_loop_images == 'show_both' || $memberlite_loop_images == 'show_banner' ) ) ) {
			$r = true;
		} else {
			$r = false;
		}
	}

	/**
	 * Filter whether the banner image should be shown or not
	 */
	$r = apply_filters( 'memberlite_should_show_banner_image', $r, $post_id );

	return $r;
}

/**
 * Get the post thumbnail image src and allow filtering.
 * Used to swap in the banner for loop/single posts with Memberlite Elements.
 */
function memberlite_get_banner_image( $attachment_id, $size = 'banner', $icon = false, $attr = '', $post_id ) {
	// default to global post
	if ( empty( $attachment_id ) ) {
		global $post;
		$post_id = $post->ID;
		$attachment_id = get_post_thumbnail_id( $post_id );
	}

	$memberlite_banner_image = wp_get_attachment_image( $attachment_id, $size, $icon, $attr );

	$memberlite_banner_image = apply_filters( 'memberlite_get_banner_image', $memberlite_banner_image, $attachment_id, $size, $icon, $attr, $post_id );

	return $memberlite_banner_image;
}

/**
 * Get the post thumbnail image src and allow filtering.
 * Used to swap in the banner for loop/single posts with Memberlite Elements.
 */
function memberlite_get_banner_image_src( $post_id = null, $size = 'banner' ) {
	// default to global post
	if ( empty( $post_id ) ) {
		global $post;
		$post_id = $post->ID;
	}

	$memberlite_banner_image_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), $size );

	$memberlite_banner_image_src = apply_filters( 'memberlite_banner_image_src', $memberlite_banner_image_src, $size, $post_id );

	return $memberlite_banner_image_src;
}

/**
 * Parses tags added to fields in customizer (i.e. posts_entry_meta_before and posts_entry_meta_after. Available tags include:
 *
 * * {post_author} - Entry author display name
 * * {post_author_posts_link} - Entry author display name, linked to their archive
 * * {post_categories} - List of entry categories separated by a comma.
 * * {post_comments} - Entry comments link in the format "X Comment/s".
 * * {post_date} - Date the entry was published, formatted to your site's "Date Format" under Settings > General
 * * {post_permalink} - A permalink to the post displayed as "permalink".
 * * {post_permalink_icon} - A permalink to the post displayed as the Font Awesome "link" icon.
 * * {post_tags} - List of entry tags separated by a comma.
 * * {post_time} - Time the entry was published, formatted to your site's "Time Format" under Settings > General
 * * {post_title} - Title of the entry.
 *
 */
function memberlite_parse_tags( $meta, $post = null ) {

	$author = get_userdata( $post->post_author );

	$searches     = array();
	$replacements = array();

	if ( strpos( $meta, '{post_author}' ) !== false && ! empty( $author ) ) {
		$searches[]     = '{post_author}';
		$replacements[] = '<span class="author vcard post_meta_author">' . esc_html( $author->display_name ) . '</span>';
	}

	if ( strpos( $meta, '{post_author_posts_link}' ) !== false && ! empty( $author ) ) {
		$searches[]     = '{post_author_posts_link}';
		$replacements[] = '<span class="author vcard post_meta_author_posts_link"><a class="url fn n" href="' . esc_url( get_author_posts_url( $author->ID, $author->user_nicename ) ) . '">' . esc_html( $author->display_name ) . '</a></span>';
	}

	if ( strpos( $meta, '{post_categories}' ) !== false ) {
		$searches[]     = '{post_categories}';
		$category_list = get_the_category_list( __( ', ', 'memberlite' ), '', $post->ID );
		if ( ! empty( $category_list ) ) {
			$replacements[] = '<span class="post_meta_categories">' . $category_list . '</span>';
		} else {
			$replacements[] = '<span class="post_meta_categories">' . __( 'No Category', 'memberlite' ) . '</span>';
		}
	}

	if ( strpos( $meta, '{post_comments}' ) !== false ) {
		$searches[]     = '{post_comments}';
		
		// Get comments count (exclude Trackbacks and Pingbacks).
		$comment_args = array(
			'post_id'	=> $post->ID,
			'count'		=> true,
			'type'		=> 'comment'
		);
		$num_comments = get_comments($comment_args);

		// Show comment count if open and post is public.
		if ( ! post_password_required() && ( comments_open() || ( $num_comments > 0 ) ) ) {
			if ( $num_comments === 0 ) {
				$comments = esc_html__( 'No Comments', 'memberlite' );
			} elseif ( $num_comments > 1 ) {
				/* translators: %s: number of comments */
				$comments = sprintf( esc_html__( '%s Comments', 'memberlite' ), $num_comments );
			} else {
				$comments = esc_html__( '1 Comment', 'memberlite' );
			}
			$write_comments = '<a href="';
			if ( is_single() ) {
				$write_comments .= '#respond';
			} else {
				$write_comments .= get_comments_link( $post->ID );
			}
			$write_comments .= '">' . $comments . '</a>';
			$replacements[] = '<span class="post_meta_comments">' . $write_comments . '</span>';
		} else {
			$replacements[] = '<span class="post_meta_comments">' . esc_html__( 'Comments Off', 'memberlite' ) . '</span>';
		}
	}

	if ( strpos( $meta, '{post_date}' ) !== false ) {
		$searches[]     = '{post_date}';
		$replacements[] = '<span class="post_meta_date"><time class="entry-date published" datetime="' . esc_attr( get_the_date( 'Y-m-d', $post->ID ) ) . '">' . esc_html( get_the_date( get_option( 'date_format' ), $post->ID ) ) . '</time></span>';
	}

	if ( strpos( $meta, '{post_permalink}' ) !== false ) {
		$searches[]     = '{post_permalink}';
		$replacements[] = '<span class="post_meta_permalink"><a href="' . get_permalink( $post->ID ) . '" rel="bookmark">' . __( 'permalink', 'memberlite' ) . '</a></span>';
	}

	if ( strpos( $meta, '{post_permalink_icon}' ) !== false ) {
		$searches[]     = '{post_permalink_icon}';
		$replacements[] = '<span class="post_meta_permalink_icon"><a href="' . get_permalink( $post->ID ) . '" rel="bookmark" class="post_meta_permalink_icon"><i class="fa fa-link"></i></a></span>';
	}
	if ( strpos( $meta, '{post_tags}' ) !== false ) {
		$searches[]     = '{post_tags}';
		$tag_list = get_the_tag_list( '', __( ', ', 'memberlite' ) );
		if ( ! empty( $tag_list ) ) {
			$replacements[] = '<span class="post_meta_tags">' . $tag_list . '</span>';
		}
	}

	if ( strpos( $meta, '{post_time}' ) !== false ) {
		$searches[]     = '{post_time}';
		$replacements[] = '<span class="post_meta_time"><time class="entry-time" datetime="' . esc_attr( get_the_date( 'H:i' ), $post->ID ) . '">' . esc_html( get_the_time() ) . '</time></span>';
	}

	if ( strpos( $meta, '{post_title}' ) !== false ) {
		$searches[]     = '{post_title}';
		$replacements[] = '<span class="entry-title post_meta_title">' . esc_html( get_the_title( $post->ID ) ) . '</span>';
	}

	$meta = str_replace( $searches, $replacements, $meta );
	return $meta;
}