????
Current Path : /home2/sarkar82/www/wp-content/plugins/siteseo/main/ |
Current File : //home2/sarkar82/www/wp-content/plugins/siteseo/main/options-breadcrumbs.php |
<?php /* * SiteSEO * https://siteseo.io/ * (c) SiteSEO Team <support@siteseo.io> */ if(!defined('ABSPATH')){ die('HACKING ATTEMPT!'); } // TODO: Handle Structured data and Primary category function siteseo_render_breadcrumbs(){ global $post; $settings = get_option('siteseo_advanced_option_name', []); $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'), 'link' => get_site_url()]; } if(is_search()){ $breadcrumbs[] = ['title' => __('Search Result for ', 'siteseo') . get_search_query(), 'link' => '']; } if(is_404()){ $breadcrumbs[] = ['title' => __('404 Page Not found', 'siteseo'), 'link' => '']; } if(is_attachment()){ $breadcrumbs[] = ['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')){ $shop_id = wc_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 = siteseo_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 = siteseo_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())){ $categories = get_the_category(); if(!empty($categories)){ foreach($categories as $category){ if(!empty($category) && $category instanceof WP_Term){ $category_trail = siteseo_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(), '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 = siteseo_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; } function siteseo_breadcrumbs_seperator(){ $settings = get_option('siteseo_advanced_option_name', []); $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; } function siteseo_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; }