Current File : /var/www/kurt6690.2978.w2868/site96340/wp-content/themes/hopeui/inc/Breadcrumb/Component.php |
<?php
/**
* HopeUI\Utility\Comments\Component class
*
* @package hopeui
*/
namespace HopeUI\Utility\Breadcrumb;
use HopeUI\Utility\Component_Interface;
use HopeUI\Utility\Templating_Component_Interface;
/**
* Class for managing breadcrumb UI.
*
* Exposes template tags:
* * `hopeui()->hopeui_php_breadcrumb( )`
*
* @link https://wordpress.org/plugins/amp/
*/
class Component implements Component_Interface, Templating_Component_Interface
{
/**
* Gets the unique identifier for the theme component.
*
* @return string Component slug.
*/
public function get_slug(): string
{
return 'breadcrumb';
}
/**
* Adds the action and filter hooks to integrate with WordPress.
*/
public function initialize()
{
}
/**
* Gets template tags to expose as methods on the Template_Tags class instance, accessible through `hopeui()`.
*
* @return array Associative array of $method_name => $callback_info pairs. Each $callback_info must either be
* a callable or an array with key 'callable'. This approach is used to reserve the possibility of
* adding support for further arguments in the future.
*/
public function template_tags(): array
{
return [
'is_hopeui_php_breadcrumb' => [$this, 'is_hopeui_php_breadcrumb'],
'hopeui_php_breadcrumb' => [$this, 'hopeui_php_breadcrumb'],
];
}
public function hopeui_php_breadcrumb()
{
$breadcrumb_style = get_theme_mod('breadcrumb_style', 1);
if (is_404()) {
return;
}
?>
<div class="hopeui_style-breadcrumb hopeui_style-breadcrumb-style-<?php echo esc_attr($breadcrumb_style) ?> ">
<div class="container">
<?php
if ($breadcrumb_style == '2') {
?>
<div class="row align-items-center">
<div class="col-lg-8 col-md-8 text-start">
<nav aria-label="breadcrumb">
<?php $this->hopeui_php_breadcrumb_title(); ?>
<?php $this->hopeui_php_breadcrumb_nav("breadcrumb main-bg"); ?>
</nav>
</div>
<?php $this->hopeui_php_breadcrumb_feature_image(); ?>
</div>
<?php } elseif ($breadcrumb_style == '3') { ?>
<div class="row align-items-center">
<?php $this->hopeui_php_breadcrumb_feature_image(); ?>
<div class="col">
<nav aria-label="breadcrumb" class="text-end hopeui_style-breadcrumb-nav">
<?php $this->hopeui_php_breadcrumb_title(); ?>
<?php $this->hopeui_php_breadcrumb_nav("breadcrumb main-bg justify-content-end"); ?>
</nav>
</div>
</div>
<?php } elseif ($breadcrumb_style == '4') { ?>
<div class="row align-items-center">
<div class="col-md-6 mb-3 mb-md-0 text-center text-md-start">
<?php $this->hopeui_php_breadcrumb_title(); ?>
</div>
<div class="col-md-6 text-md-end text-sm-center">
<nav aria-label="breadcrumb" class="hopeui_style-breadcrumb-nav">
<?php $this->hopeui_php_breadcrumb_nav("breadcrumb main-bg justify-content-md-end"); ?>
</nav>
</div>
</div>
<?php } elseif ($breadcrumb_style == '5') { ?>
<div class="row align-items-center hopeui_style-breadcrumb-three">
<div class="col-md-6 mb-3 mb-md-0">
<nav aria-label="breadcrumb" class="text-md-start text-center hopeui_style-breadcrumb-nav">
<?php $this->hopeui_php_breadcrumb_nav("breadcrumb main-bg justify-content-md-start"); ?>
</nav>
</div>
<div class="col-md-6 text-md-end text-center">
<?php $this->hopeui_php_breadcrumb_title(); ?>
</div>
</div>
<?php } else { ?>
<div class="row align-items-center justify-content-center text-center">
<div class="col-sm-12">
<nav aria-label="breadcrumb" class="hopeui_style-breadcrumb-nav">
<?php $this->hopeui_php_breadcrumb_title(); ?>
<?php $this->hopeui_php_breadcrumb_nav("breadcrumb main-bg"); ?>
</nav>
</div>
</div>
<?php } ?>
</div>
</div>
<?php
}
function hopeui_php_breadcrumb_title()
{
if (!get_theme_mod('display_breadcrumb_title', true)) return;
$page_id = get_queried_object_id();
//return if title option is not enable
$page_option = get_post_meta($page_id, 'display_breadcrumb_title', true);
if ($page_option == 'no') {
return;
} else if (isset($hopeui_php_options['display_breadcrumb_title']) && $hopeui_php_options['display_breadcrumb_title'] == 'no') {
return;
}
$title = '';
$title_tag = get_theme_mod('breadcrumb_title_tag', 'h2');
if (is_archive()) {
$title = get_the_archive_title();
} elseif (is_search()) {
$title = esc_html__('Search', 'hopeui');
} elseif (is_404()) {
$title = __('Oops! That page can not be found.', 'hopeui');
if (isset($hopeui_php_options['404_title'])) {
$title = !empty(trim($hopeui_php_options['404_title'])) ? $hopeui_php_options['404_title'] : '';
}
} elseif (is_home()) {
$title = esc_html__('Home', 'hopeui');
} elseif ('iqonic_hf_layout' === get_post_type()) {
$title = get_the_title($page_id);
} elseif (get_theme_mod('hopeui_php_display_breadcrumb_blog_title', true) && is_singular('post')) {
$title = get_theme_mod('hopeui_php_breadcrumb_blog_title', __('Blog Detail', 'hopeui'));
} else {
$title = get_the_title();
}
if (!empty(trim($title))) :
?>
<<?php echo esc_attr($title_tag); ?> class="title">
<?php echo wp_kses($title, array(['span' => array()])); ?>
</<?php echo esc_attr($title_tag); ?>>
<?php
endif;
}
public function hopeui_php_breadcrumb_feature_image()
{
$bnurl = '';
$page_id = get_queried_object_id();
global $hopeui_php_options;
if (has_post_thumbnail($page_id) && !is_single()) {
$image_array = wp_get_attachment_image_src(get_post_thumbnail_id($page_id), 'full');
$bnurl = $image_array[0];
} elseif (is_404()) {
if (!empty($hopeui_php_options['404_banner_image']['url'])) {
$bnurl = $hopeui_php_options['404_banner_image']['url'];
}
} elseif (is_home()) {
if (!empty($hopeui_php_options['blog_default_banner_image']['url'])) {
$bnurl = $hopeui_php_options['blog_default_banner_image']['url'];
}
} else {
if (!empty($hopeui_php_options['page_default_breadcrumb_image']['url'])) {
$bnurl = $hopeui_php_options['page_default_breadcrumb_image']['url'];
}
}
if (!empty($bnurl)) {
$img_pos = "";
if (!empty($hopeui_php_options['bg_image']) && $hopeui_php_options['bg_image'] != 1) {
$img_pos = 'float-right';
}
?>
<div class="col-lg-4 col-md-4 col-sm-12 align-breadcrumb-image">
<img src="<?php echo esc_url($bnurl); ?>" class="img-fluid <?php echo esc_attr($img_pos) ?>" alt="<?php esc_attr_e('banner', 'hopeui'); ?>">
</div>
<?php
}
}
function hopeui_php_breadcrumb_nav($class = "")
{
//return if nav option is not enable
if (!get_theme_mod('display_breadcrumb_nav', true)) return;
global $post;
echo '<ol class="' . esc_attr($class) . '">';
$show_on_home = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show
$show_current = 1; // 1 - show current post/page title in breadcrumbs, 0 - don't show
if (is_front_page()) {
if ($show_on_home == 1) echo '<li class="breadcrumb-item"><a href="' . esc_url(home_url()) . '">' . esc_html__('Home', 'hopeui') . '</a></li>';
} else {
echo '<li class="breadcrumb-item"><a href="' . esc_url(home_url()) . '">' . esc_html__('Home', 'hopeui') . '</a></li> ';
if (is_home()) {
echo '<li class="breadcrumb-item active">' . esc_html__('Blogs', 'hopeui') . '<span class="breadcrumbs-separator"></span></li>';
} elseif (is_category()) {
$this_cat = get_category(get_query_var('cat'), false);
if ($this_cat->parent != 0) echo '<li class="breadcrumb-item">' . wp_kses(get_category_parents($this_cat->parent, TRUE, ' '), 'post') . '<span class="breadcrumbs-separator"></span></li>';
echo '<li class="breadcrumb-item active">' . esc_html__('Archive by category : ', 'hopeui') . ' "' . esc_html(single_cat_title('', false)) . '" <span class="breadcrumbs-separator"></span></li>';
} elseif (is_search()) {
echo '<li class="breadcrumb-item active">' . esc_html__('Search results for : ', 'hopeui') . ' "' . esc_html(get_search_query()) . '"<span class="breadcrumbs-separator"></span></li>';
} elseif (is_day()) {
echo '<li class="breadcrumb-item"><a href="' . esc_url(get_year_link(get_the_time('Y'))) . '">' . esc_html(get_the_time('Y')) . '</a><span class="breadcrumbs-separator"></span></li> ';
echo '<li class="breadcrumb-item"><a href="' . esc_url(get_month_link(get_the_time('Y'), get_the_time('m'))) . '">' . esc_html(get_the_time('F')) . '</a><span class="breadcrumbs-separator"></span></li> ';
echo '<li class="breadcrumb-item active">' . esc_html(get_the_time('d')) . '<span class="breadcrumbs-separator"></span></li>';
} elseif (is_month()) {
echo '<li class="breadcrumb-item"><a href="' . esc_url(get_year_link(get_the_time('Y'))) . '">' . esc_html(get_the_time('Y')) . '</a><span class="breadcrumbs-separator"></span></li> ';
echo '<li class="breadcrumb-item active">' . esc_html(get_the_time('F')) . '<span class="breadcrumbs-separator"></span></li>';
} elseif (is_year()) {
echo '<li class="breadcrumb-item active">' . esc_html(get_the_time('Y')) . '<span class="breadcrumbs-separator"></span></li>';
} elseif (is_single() && !is_attachment()) {
if (get_post_type() != 'post') {
$post_type = get_post_type_object(get_post_type());
$slug = $post_type->rewrite;
if (!empty($slug)) {
echo '<li class="breadcrumb-item"><a href="' . esc_url(home_url($slug['slug'])) . '/">' . esc_html($post_type->labels->singular_name) . '</a><span class="breadcrumbs-separator"></span></li>';
}
if ($show_current == 1) echo '<li class="breadcrumb-item">' . esc_html(get_the_title()) . '<span class="breadcrumbs-separator"></span></li>';
} else {
$cat = get_the_category();
if (!empty($cat)) {
$cat = $cat[0];
if ($show_current == 0) $cat = preg_replace("#^(.+)\as\s$#", "$1", $cat);
echo '<li class="breadcrumb-item">' . wp_kses(get_category_parents($cat, TRUE, ' '), 'post') . '<span class="breadcrumbs-separator"></span></li>';
if (!empty(get_the_title())) {
if ($show_current == 1) echo '<li class="breadcrumb-item active">' . esc_html(get_the_title()) . '<span class="breadcrumbs-separator"></span></li>';
}
}
}
} elseif (!is_single() && !is_page() && get_post_type() != 'post' && !is_404()) {
$post_type = get_post_type_object(get_post_type());
if ($post_type) {
echo '<li class="breadcrumb-item active">' . esc_html($post_type->labels->singular_name) . '<span class="breadcrumbs-separator"></span></li>';
}
} elseif (!is_single() && is_attachment()) {
$parent = get_post($post->post_parent);
$cat = get_the_category($parent->ID);
$cat = $cat[0];
echo '<li class="breadcrumb-item">' . esc_html(get_category_parents($cat, TRUE, ' ')) . '<span class="breadcrumbs-separator"></span></li>';
echo '<li class="breadcrumb-item"><a href="' . esc_url(get_permalink($parent)) . '">' . esc_html($parent->post_title) . '</a><span class="breadcrumbs-separator"></span></li>';
if ($show_current == 1) echo '<li class="breadcrumb-item active"> ' . esc_html(get_the_title()) . '<span class="breadcrumbs-separator"></span></li>';
} elseif (is_page() && !$post->post_parent) {
if ($show_current == 1) echo '<li class="breadcrumb-item active">' . esc_html(get_the_title()) . '<span class="breadcrumbs-separator"></span></li>';
} elseif (is_page() && $post->post_parent) {
$trail = '';
if ($post->post_parent) {
$parent_id = $post->post_parent;
$breadcrumbs = array();
while ($parent_id) {
$page = get_post($parent_id);
$breadcrumbs[] = '<li class="breadcrumb-item"><a href="' . esc_url(get_permalink($page->ID)) . '">' . esc_html(get_the_title($page->ID)) . '</a><span class="breadcrumbs-separator"></span></li>';
$parent_id = $page->post_parent;
}
$breadcrumbs = array_reverse($breadcrumbs);
foreach ($breadcrumbs as $crumb) $trail .= $crumb;
}
echo wp_kses($trail, ["li" => ["class" => true], "a" => ["href" => true], "span" => ["class" => true]]);
if ($show_current == 1) echo '<li class="breadcrumb-item active"> ' . esc_html(get_the_title()) . '<span class="breadcrumbs-separator"></span></li>';
} elseif (is_tag()) {
echo '<li class="breadcrumb-item active">' . esc_html__('Posts tagged', 'hopeui') . ' "' . esc_html(single_tag_title('', false)) . '"<span class="breadcrumbs-separator"></span></li>';
} elseif (is_author()) {
global $author;
$userdata = get_userdata($author);
echo '<li class="breadcrumb-item active">' . esc_html__('Articles posted by : ', 'hopeui') . ' ' . esc_html($userdata->display_name) . '<span class="breadcrumbs-separator"></span></li>';
} elseif (is_404()) {
echo '<li class="breadcrumb-item active">' . esc_html__('Error 404', 'hopeui') . '<span class="breadcrumbs-separator"></span></li>';
}
if (get_query_var('paged')) {
echo '<li class="breadcrumb-item active">' . esc_html__('Page', 'hopeui') . ' ' . esc_html(get_query_var('paged')) . '<span class="breadcrumbs-separator"></span></li>';
}
}
echo '</ol>';
}
public function is_hopeui_php_breadcrumb()
{
$page_id = get_queried_object_id();
$breadcrumb_page_option = get_post_meta($page_id, 'page_banner', true);
switch ($breadcrumb_page_option) {
case 'disable':
return false;
case 'inherit':
if (!get_theme_mod('display_breadcrumb', true) || !(get_theme_mod('display_breadcrumb_title', true) || get_theme_mod('display_breadcrumb_nav', true))) {
return false;
}
default:
return true;
break;
}
}
}