File "breadcrumb.php"

Full Path: /home/elegucvf/public_html/video/wp-content/wp-includes/wp-includes/wp-content/themes/atlas/functions/breadcrumb.php
File size: 7.11 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * Breadcrumbs
 *
 * @package Atlas
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

if( ! function_exists( 'th90_breadcrumbs' ) ) {

	function th90_breadcrumbs( $print = false ){
		$home_text  = esc_html__( 'Home', 'atlas' );
		$breadcrumbs = array();

        // WooCommerce breadcrumbs
		if ( th90_woo_check_pages() ){
			if ( $print ) {
	            echo woocommerce_breadcrumb( array(
	    			'delimiter'   => '',
	    			'wrap_before' => '<ul id="breadcrumb" class="breadcrumbs">',
	    			'wrap_after'  => '</ul>',
	    			'before'      => '<li>',
	    			'after'       => '</li>',
	    			'home'        => esc_html__( 'Home', 'atlas' ),
	    		) );
			}
        }

		// WordPress breadcrumbs
		elseif ( ! is_home() && ! is_front_page() ){
			$post     = get_post();
			$home_url = esc_url(home_url( '/' ));

			// Home
			$breadcrumbs[] = array(
				'url'   => $home_url,
				'name'  => $home_text,
			);

			// Category
			if ( is_category() ){
				$category = get_query_var( 'cat' );
				$category = get_category( $category );

				if( $category->parent !== 0 ){
					$parent_categories = array_reverse( get_ancestors( $category->cat_ID, 'category' ) );

					foreach ( $parent_categories as $parent_category ) {
						$breadcrumbs[] = array(
							'url'  => get_term_link( $parent_category, 'category' ),
							'name' => get_cat_name( $parent_category ),
						);
					}
				}

				$breadcrumbs[] = array(
					'name' => get_cat_name( $category->cat_ID ),
				);
			}

			// Day
			elseif ( is_day() ){
				$breadcrumbs[] = array(
					'url'  => get_year_link( get_the_time( 'Y' ) ),
					'name' => get_the_time( 'Y' ),
				);

				$breadcrumbs[] = array(
					'url'  => get_month_link( get_the_time( 'Y' ), get_the_time( 'm' ) ),
					'name' => get_the_time( 'F' ),
				);

				$breadcrumbs[] = array(
					'name' => get_the_time( 'd' ),
				);
			}

			// Month
			elseif ( is_month() ){
				$breadcrumbs[] = array(
					'url'  => get_year_link( get_the_time( 'Y' ) ),
					'name' => get_the_time( 'Y' ),
				);

				$breadcrumbs[] = array(
					'name' => get_the_time( 'F' ),
				);
			}

			// Year
			elseif ( is_year() ){
				$breadcrumbs[] = array(
					'name' => get_the_time( 'Y' ),
				);
			}

			// Tag
			elseif ( is_tag() ){
				$breadcrumbs[] = array(
					'name' => get_the_archive_title(),
				);
			}

			// Author
			elseif ( is_author() ){
				$author = get_query_var( 'author' );
				$author = get_userdata($author);

				$breadcrumbs[] = array(
					'name' => $author->display_name,
				);
			}

			// Search
			elseif ( is_search() ){
				$breadcrumbs[] = array(
					'name' => sprintf( esc_html__( 'Search Results: %s', 'atlas' ),  get_search_query() ),
				);
			}

			// 404
			elseif ( is_404() ){
				$breadcrumbs[] = array(
					'name' => esc_html__( 'Nothing Found', 'atlas' ),
				);
			}


			# Pages ----------
			elseif ( is_page() ){
				if ( $post->post_parent ){
					$parent_id   = $post->post_parent;
					$page_parents = array();

					while ( $parent_id ){
						$get_page  = get_page( $parent_id );
						$parent_id = $get_page->post_parent;

						$page_parents[] = array(
							'url'  => get_permalink( $get_page->ID ),
							'name' => strip_tags( get_the_title( $get_page->ID ) ),
						);
					}

					$page_parents = array_reverse( $page_parents );

					foreach( $page_parents as $single_page ){

						$breadcrumbs[] = array(
							'url'  => $single_page['url'],
							'name' => $single_page['name'],
						);
					}
				}

				$breadcrumbs[] = array(
					'name' => strip_tags( wp_trim_words( get_the_title(), 3 ) ),
				);
			}

			// Attachment
			elseif ( is_attachment() ){
				if( ! empty( $post->post_parent ) ){
					$parent = get_post( $post->post_parent );

					$breadcrumbs[] = array(
						'url'  => get_permalink( $parent ),
						'name' => $parent->post_title,
					);
				}

				$breadcrumbs[] = array(
					'name' => strip_tags( wp_trim_words( get_the_title(), 3 ) ),
				);
			}

			// Single Posts
			elseif ( is_singular() ){

				// Single Post
				if ( get_post_type() == 'post' ){

					$category = th90_get_primary_category_id();

					if( ! empty( $category ) ){

						$category = get_category( $category );

						if( $category->parent !== 0 ){
							$parent_categories = array_reverse( get_ancestors( $category->term_id, 'category' ) );

							foreach ( $parent_categories as $parent_category ) {
								$breadcrumbs[] = array(
									'url'  => get_term_link( $parent_category, 'category' ),
									'name' => get_cat_name( $parent_category ),
								);
							}
						}

						$breadcrumbs[] = array(
							'url'  => get_term_link( $category->term_id, 'category' ),
							'name' => get_cat_name( $category->term_id ),
						);
					}
				}

				// Single custom Post type
				else{
					// Get the main Post type archive link
					if( $archive_link = get_post_type_archive_link( get_post_type() ) ){

						$post_type = get_post_type_object( get_post_type() );

						$breadcrumbs[] = array(
							'url'  => $archive_link,
							'name' => $post_type->labels->singular_name,
						);
					}

					// Get custom Post Types taxonomies
					$taxonomies = get_object_taxonomies( $post, 'objects' );

					if( ! empty( $taxonomies ) && is_array( $taxonomies ) ){
						foreach( $taxonomies as $taxonomy ){
							if( $taxonomy->hierarchical ){
								$taxonomy_name = $taxonomy->name;
								break;
							}
						}
					}

					if( ! empty( $taxonomy_name ) ){
						$custom_terms = get_the_terms( $post, $taxonomy_name );

						if( ! empty( $custom_terms ) && ! is_wp_error( $custom_terms )){

							foreach ( $custom_terms as $term ){

								$breadcrumbs[] = array(
									'url'  => get_term_link( $term ),
									'name' => $term->name,
								);

								break;
							}
						}
					}
				}

				$breadcrumbs[] = array(
					'name' => strip_tags( get_the_title() ),
				);
			}

			// Print the BreadCrumb
			if( ! empty( $breadcrumbs ) ){
				$counter = 0;
				$breadcrumbs_schema = array(
					'@context'        => 'https://schema.org',
					'@type'           => 'BreadcrumbList',
					'@id'             => '#breadcrumb',
					'itemListElement' => array(),
				);

				if ( $print ) {
					echo '<ul id="breadcrumb" class="breadcrumbs">';

						foreach( $breadcrumbs as $item ) {

							$counter++;

							if( ! empty( $item['url'] )){
								echo '<li><a href="'. esc_url( $item['url'] ) .'">'. $item['name'] .'</a></li>';
							}
							else{
								echo '<li class="current">' . $item['name'] . '</li>';
							}
						}

					echo '</ul>';
				} else {
					foreach( $breadcrumbs as $item ) {

						$counter++;

						if ( ! empty( $item['url'] ) ) {
							$breadcrumbs_schema['itemListElement'][] = array(
								'@type'    => 'ListItem',
								'position' => $counter,
								'name'     => $item['name'],
								'item'     => esc_url( $item['url'] ),
							);
						} else {
							$breadcrumbs_schema['itemListElement'][] = array(
								'@type'    => 'ListItem',
								'position' => $counter,
								'name'     => $item['name'],
							);
						}
					}
					echo '<script type="application/ld+json">'. wp_json_encode( $breadcrumbs_schema ) .'</script>';
				}
			}
		}

		wp_reset_postdata();
	}

}