\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /usr/local/sitepad/editor/site-data/plugins/siteseo-pro/main/

Viewing File: breadcrumbs.php

<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEOPro;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Breadcrumbs{

	static function enable_breadcrumbs(){
		global $siteseo;
		
		$settings = $siteseo->pro;
		$advanced_option = get_option('siteseo_advanced_option_name');
		$settings = isset($settings['breadcrumbs_enable']) ? $settings : $advanced_option;

		if(!empty($settings['breadcrumbs_enable'])){
			add_shortcode('siteseo_breadcrumbs', '\SiteSEOPro\Breadcrumbs::render');
		}
	}

	static function render(){
		global $post, $siteseo;
		
		$settings = $siteseo->pro;
		$advanced_option = get_option('siteseo_advanced_option_name');
		$settings = isset($settings['breadcrumbs_enable']) ? $settings : $advanced_option;
		
		$breadcrumbs = [];

		$seperator = !empty($settings['breadcrumbs_seperator']) ? $settings['breadcrumbs_seperator'] : '/';
		$prefix = !empty($settings['breadcrumb_prefix']) ? $settings['breadcrumb_prefix'] : '';

		if(!empty($prefix)){
			$breadcrumbs[] = ['title' => $prefix, 'link' => ''];
		}

		if(!empty($settings['breadcrumbs_custom_seperator'])){
			$seperator = $settings['breadcrumbs_custom_seperator'];
		}

		if(is_home()){
			$breadcrumbs[] = single_post_title('', false);
		} elseif(empty($settings['breadcrumbs_home'])){
			$breadcrumbs[] = ['title' => __('Home', 'siteseo-pro'), 'link' => get_site_url()];
		}

		if(is_search()){
			$breadcrumbs[] = ['title' => __('Search Result for ', 'siteseo-pro') . get_search_query(), 'link' => ''];
		}

		if(is_404()){
			$breadcrumbs[] = ['title' => __('404 Page Not found', 'siteseo-pro'), 'link' => ''];
		}

		if(is_attachment()){
			$breadcrumbs[] = ['title' => get_the_title($post->post_parent), 'link' => get_permalink($post->post_parent)];
			$breadcrumbs[] = ['title' => get_the_title(), 'link' => get_permalink()];
		}

		if(function_exists('is_shop') && function_exists('is_product') && function_exists('is_product_category') && function_exists('is_product_tag')
			&& (is_shop() || is_product() || is_product_category() || is_product_tag()) && function_exists('wc_get_page_id') && function_exists('kkart_get_page_id')){
			$shop_id = !defined('SITEPAD') ? wc_get_page_id('shop') : kkart_get_page_id('shop');
			
			// If shop ID is same as the home id that means, the hope page is being used as the shop page,
			// So adding a Shop page crumb will make it redundent.
			if(isset($shop_id) && get_option('page_on_front') != $shop_id){
				$breadcrumbs[] = ['title' => get_the_title($shop_id), 'link' => get_permalink($shop_id)];
			}

			if(is_product_category()){
				$term = $GLOBALS['wp_query']->get_queried_object();

				if(!empty($term)){
					$term_trail = self::get_term_ansestors($term);
					if(!empty($term_trail)){
						$breadcrumbs = array_merge($breadcrumbs, $term_trail);
					}
				}
			}

			if(is_product_tag()){
				$term = $GLOBALS['wp_query']->get_queried_object();

				if(!empty($term)){
					$breadcrumbs[] = ['title' => $term->name, 'link' => ''];
				}
			}

			if(is_product()){
				// Getting Product category and its ansestors if any.
				$categories = get_the_terms($post->ID, 'product_cat');

				if(!empty($categories)){
					foreach($categories as $category){
						if(!empty($category) && $category instanceof \WP_Term){
							$category_trail = self::get_term_ansestors($category);
							if(!empty($category_trail)){
								$breadcrumbs = array_merge($breadcrumbs, $category_trail);
							}

							$breadcrumbs[] = ['title' => $category->name, 'link' => get_term_link($category)];
							break;
						}
					}
				}

				$breadcrumbs[] = ['title' => get_the_title($post), 'link' => ''];
			}
		}

		if(is_singular() && !is_archive() && (!function_exists('is_product') || !is_product())){

			// handle custom post types
			$post_type = get_post_type();

			if($post_type && !in_array($post_type,['post', 'page']) && get_post_type_archive_link($post_type)){
				$post_type_obj = get_post_type_object($post_type);

				if(!empty($post_type_obj)){		
					$breadcrumbs[] = [
						'title' => $post_type_obj->labels->name,
						'link' => get_post_type_archive_link($post_type),
					];
				}
			}

			// Handle categories
			$categories = get_the_category();
			if(!empty($categories)){
				foreach($categories as $category){
					if(!empty($category) && $category instanceof \WP_Term){
						$category_trail = self::get_term_ansestors($category);
						if(!empty($category_trail)){
							$breadcrumbs = array_merge($breadcrumbs, $category_trail);
						}

						$breadcrumbs[] = ['title' => $category->name, 'link' => get_term_link($category)];
						break;
					}
				}
			}

			// Parent post
			if(!empty($post) && !empty($post->post_parent)){
				$parent_id = $post->post_parent;
				$parent_breadcrumbs = [];

				while(!empty($parent_id)){
					$parent = get_post($parent_id);
					
					if(empty($parent)){
						break;
					}
					
					$parent_breadcrumbs[] = [
						'title' => get_the_title($parent_id),
						'link' => get_permalink($parent_id),
					];
					
					$parent_id = $parent->post_parent;
				}

				$breadcrumbs = array_merge($breadcrumbs, array_reverse($parent_breadcrumbs));
			}

			$breadcrumbs[] = ['title' => get_the_title(), 'link' => ''];
		}

		if(is_archive()){
			if(is_category() || is_tax() || is_tag()){
				$term = $GLOBALS['wp_query']->get_queried_object();

				if(!is_tag() && !empty($term) && $term instanceof \WP_Term){
					// Adding Term ansestor if any
					if(!is_tag()){
						$term_trail = self::get_term_ansestors($term);
						if(!empty($term_trail)){
							$breadcrumbs = array_merge($breadcrumbs, $term_trail);
						}
					}

					$breadcrumbs[] = ['title' => $term->name, 'link' => ''];
				}
			}

			if(is_author()){
				global $author;

				$author_data = get_userdata($author);
				$breadcrumbs[] = ['title' => $author_data->display_name, 'link' => get_author_posts_url($author_data->ID)];
			}
		}

		$html ='<style>.siteseo-breadcrumbs{display:flex;list-style-type:none;margin:0;padding:0}.siteseo-breadcrumbs-seperator{margin:0 5px;padding:0}</style><div class="siteseo-breadcrumbs-wrap">
		<ul class="siteseo-breadcrumbs">';

		foreach($breadcrumbs as $i => $breadcrumb){
			if(empty($breadcrumb['title'])){
				continue;
			}
			
			$html .= '<li>'.(!empty($breadcrumb['link']) ? '<a href="'.esc_url($breadcrumb['link']).'" title="'.esc_attr($breadcrumb['title']).'">'.esc_html($breadcrumb['title']).'</a>' : esc_html($breadcrumb['title'])).'</li>';

			if(count($breadcrumbs) - 1 != $i){
				$html .= '<div class="siteseo-breadcrumbs-seperator"><span>'.esc_html($seperator).'</span></div>';
			}
		}
		$html .= '</ul></div>';
		
		return $html;
	}

	static function seperator(){
		global $siteseo;
		
		$settings = $siteseo->pro;
		$advanced_option = get_option('siteseo_advanced_option_name');
		$settings = isset($settings['breadcrumbs_enable']) ? $settings : $advanced_option;
		
		$seperator = '/';

		if(!empty($settings)){
			$seperator = !empty($settings['breadcrumbs_seperator']) ? $settings['breadcrumbs_seperator'] : '/';

			if(!empty($settings['breadcrumbs_custom_seperator'])){
				$seperator = $settings['breadcrumbs_custom_seperator'];
			}
		}

		return $seperator;
	}

	static function get_term_ansestors($term){
		$ansestors = get_ancestors($term->term_id, $term->taxonomy);
		$ansestors = array_reverse($ansestors);
		$ansestors_res = [];

		foreach($ansestors as $ansestor){
			$ansestor = get_term($ansestor, $term->taxonomy);
			if(empty($ansestor) || is_wp_error($ansestor) || !is_a($ansestor, 'WP_Term')){
				continue;
			}

			$ansestors_res[] = ['title' => $ansestor->name, 'link' => get_term_link($ansestor)];
		}

		return $ansestors_res;
	}
	
	static function render_block(){
		return sprintf('<div %s>%s</div>', get_block_wrapper_attributes(), \SiteSEOPro\Breadcrumbs::render());
	}


}