Viewing File: /home/maglabs/exclusive/wp-content/themes/homeid/inc/breadcrumbs.php

<?php
// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
	exit( 'Direct script access denied.' );
}

function homeid_the_breadcrumbs() {
	$html_markup = '';
	// Add home link
	$html_markup .= homeid_get_breadcrumb_home();

	// Woocommerce path prefix
	if (class_exists('WooCommerce') && ((is_woocommerce() && is_archive() && !is_shop()) || is_cart() || is_checkout() || is_account_page())) {
		$html_markup .= homeid_get_woocommerce_shop_page();
	}

	if (is_singular()) {
		$post = get_post(get_queried_object_id());
		// display archive link for post type
		if (isset($post->post_type) && get_post_type_archive_link($post->post_type)) {
			$html_markup .= homeid_get_post_type_archive();
		}

		$html_markup .= homeid_get_breadcrumb_leaf_markup();
	} else {
		// Blog page is a dedicated page.
		if ( is_home() && ! is_front_page() ) {
			$posts_page         = get_option( 'page_for_posts' );
			$posts_page_title   = get_the_title( $posts_page );
			$html_markup .= homeid_get_single_breadcrumb_markup( $posts_page_title );
		}

		// Custom post types archives.
		if ( is_post_type_archive() ) {
			$html_markup .= homeid_get_post_type_archive( false );

			// Search on custom post type (e.g. Woocommerce).
			if ( is_search() ) {
				$html_markup .= homeid_get_breadcrumb_leaf_markup( 'search' );
			}
		} // Taxonomy Archives.
		elseif ( is_tax() || is_tag() || is_category() ) {
			if ( is_tag() ) { // If we have a tag archive, add the tag prefix.
				$html_markup .= esc_html__('Tag:','homeid');
			}
			$html_markup .= homeid_get_taxonomies();
			$html_markup .= homeid_get_breadcrumb_leaf_markup( 'term' );
		} // Date Archives.
		elseif ( is_date() ) {
			global $wp_locale;
			// Set variables.
			$year = get_the_date('Y');
			// Year Archive, only is a leaf.
			if ( is_year() ) {
				$html_markup .= homeid_get_breadcrumb_leaf_markup( 'year' );
			} // Month Archive, needs year link and month leaf.
			elseif ( is_month() ) {
				$html_markup .= homeid_get_single_breadcrumb_markup( $year, get_year_link( $year ) );
				$html_markup .= homeid_get_breadcrumb_leaf_markup( 'month' );
			} // Day Archive, needs year and month link and day leaf.
			elseif ( is_day() ) {
				$month      = get_the_date('m');
				$month_name = $wp_locale->get_month( $month );
				$html_markup .= homeid_get_single_breadcrumb_markup( $year, get_year_link( $year ) );
				$html_markup .= homeid_get_single_breadcrumb_markup( $month_name, get_month_link( $year, $month ) );
				$html_markup .= homeid_get_single_breadcrumb_markup( 'day' );
			}
		} // Author Archives.
		elseif ( is_author() ) {
			$html_markup .= homeid_get_breadcrumb_leaf_markup( 'author' );
		} // Search Page.
		elseif ( is_search() ) {
			$html_markup .= homeid_get_breadcrumb_leaf_markup( 'search' );
		} // 404 Page.
		elseif ( is_404() ) {
			$html_markup .= homeid_get_breadcrumb_leaf_markup( '404' );
		}
	}
	if ($html_markup) {
		$html_markup = '<ul class="breadcrumbs d-flex flex-wrap">' . $html_markup . '</ul>';
	}

	echo wp_kses_post($html_markup);
}

function homeid_get_breadcrumb_home() {
	if (!is_front_page()) {
		$output = homeid_get_single_breadcrumb_markup(esc_html__('Home','homeid'), get_home_url('/'));;
	} else {
		$output = homeid_get_single_breadcrumb_markup(esc_html__('Blog','homeid'));
	}
	return $output;
}

function homeid_get_single_breadcrumb_markup($title, $link = '', $separator = true, $micro_data = true)
{
	$micro_data_item_scope = $micro_data_url = $micro_data_title = $separator_markup = '';
	if ($micro_data) {
		$micro_data_item_scope = 'itemscope itemtype="http://data-vocabulary.org/Breadcrumb"';
		$micro_data_url = 'itemprop="url"';
		$micro_data_title = 'itemprop="title"';
	}

	$breadcrumb_content = '<span ' . $micro_data_title . '>' . $title . '</span>';
	if ($link) {
		$breadcrumb_content = '<a ' . $micro_data_url . ' href="' . esc_url($link) . '">' . $breadcrumb_content . '</a>';
	}

	if ($separator) {
		$separator_markup = '<li class="breadcrumb-sep">/</li>';
	}

	$output = '<li ' . $micro_data_item_scope . '>' . $breadcrumb_content . '</li>' . $separator_markup;
	return $output;
}

function homeid_get_woocommerce_shop_page($linked = true) {
	$post_type = 'product';
	$post_type_object = get_post_type_object($post_type);
	$shop_page_markup = '';
	$link = '';
	if (isset($post_type_object) && class_exists('WooCommerce') && (is_woocommerce() || is_cart() || is_checkout() || is_account_page())) {
		// Get shop page id and then its name.
		$shop_page_name = wc_get_page_id('shop') ? get_the_title(wc_get_page_id('shop')) : '';

		// Use the archive name if no shop page was set.
		if (!$shop_page_name) {
			$shop_page_name = $post_type_object->labels->name;
		}

		// Check if the breadcrumb should be linked.
		if ($linked) {
			$link = get_post_type_archive_link($post_type);
		}

		$shop_page_markup = homeid_get_single_breadcrumb_markup($shop_page_name, $link);
	}

	return $shop_page_markup;
}

function homeid_get_post_type_archive($linked = true) {
	global $wp_query;
	$post_type = $wp_query->query_vars['post_type'];
	if (!$post_type) {
		$post_type = get_post_type();
	}

	$post_type_object = get_post_type_object($post_type);
	if (!is_object($post_type_object)) return '';

	// Woocommerce
	if (($post_type === 'product') && class_exists('WooCommerce')) {
		$woocommerce_shop_page = homeid_get_woocommerce_shop_page($linked);
		return $woocommerce_shop_page;
	}


	$archive_title = $post_type_object->name;
	if (isset($post_type_object->label) && !empty($post_type_object->label)) {
		$archive_title = $post_type_object->label;
	} elseif (isset($post_type_object->labels->menu_name) && !empty($post_type_object->labels->menu_name)) {
		$archive_title = $post_type_object->labels->menu_name;
	}


	$link = '';
	if ($linked) {
		$link = get_post_type_archive_link($post_type);
	}
	if ($post_type === 'post') {
		$archive_title = esc_html__( 'Blog', 'homeid' );
	}

	if (trailingslashit($link) === trailingslashit(home_url('/'))) {
		return '';
	}

	return homeid_get_single_breadcrumb_markup($archive_title, $link);
}

function homeid_get_breadcrumb_leaf_markup($object_type = '') {
	global $wp_query, $wp_locale;
	$post = get_post(get_queried_object_id());
	switch ( $object_type ) {
		case 'term':
			$term  = $wp_query->get_queried_object();
			$title = $term->name;
			break;
		case 'year':
			$title = esc_html( get_the_date('Y') );
			break;
		case 'month':
			$title = $wp_locale->get_month( get_the_date('m') );
			break;
		case 'day':
			$title = get_the_date('d');
			break;
		case 'author':
			$user  = $wp_query->get_queried_object();
			$title = $user->display_name;
			break;
		case 'search':
			$title = esc_html__('Search:','homeid') . ' ' . esc_html( get_search_query() );
			break;
		case '404':
			$title = esc_html__('Page Not Found','homeid');
			break;
		default:
			$title = get_the_title( $post->ID );
			break;
	}

	return '<li class="breadcrumb-leaf">' . $title . '</li>';
}

function homeid_get_taxonomies() {
	global $wp_query;
	$term = $wp_query->get_queried_object();
	$terms_markup = '';

	// Make sure we have hierarchical taxonomy and parents.
	if ( 0 != $term->parent && is_taxonomy_hierarchical( $term->taxonomy ) ) {
		$term_ancestors = get_ancestors( $term->term_id, $term->taxonomy );
		$term_ancestors = array_reverse( $term_ancestors );
		// Loop through ancestors to get the full tree.
		foreach ( $term_ancestors as $term_ancestor ) {
			$term_object   = get_term( $term_ancestor, $term->taxonomy );
			$terms_markup .= homeid_get_single_breadcrumb_markup( $term_object->name, get_term_link( $term_object->term_id, $term->taxonomy ) );
		}
	}

	return $terms_markup;
}
Back to Directory File Manager