0

custom bread crumb not working with multiple categories assigned to a single product, we do not have the categories page, so don't want to show categories in the URL, but need to show the categories navigation on the breadcrumb .

<?php

function bootstrap_breadcrumb($custom_home_icon = false, $custom_post_types = false)
{
    wp_reset_query();
    global $post;
    $is_custom_post = $custom_post_types ? is_singular($custom_post_types) : false;
    $post_type      = get_post_type(get_the_ID());
    if (!is_front_page() && !is_home()) {
        echo '<ol class="d-flex breadcrumb-wrapper">';
        echo '<li><a href="';
        echo get_option('home');
        echo '">';
        if ($custom_home_icon) {
            echo $custom_home_icon;
        } else {
            _e('Home', 'star');
        }

        echo "</a></li>";
        if (has_category()) {
            echo '<li class="active"><a href="' . esc_url(get_permalink(get_page(get_the_category($post->ID)))) . '">';
            the_category(', ');
            echo '</a></li>';
        }
        if (is_category() || is_single() || $is_custom_post) {
            if (is_category()) {
                echo '<li class="active"><a href="' . esc_url(get_permalink(get_page(get_the_category($post->ID)))) . '">' . get_the_category($post->ID)[0]->name . '</a></li>';
            }

            if ($is_custom_post) {
                if (is_singular('projects')) {
                    $page             = get_field('project_archive', 'option');
                    $project_category = wp_get_post_terms(get_the_ID(), 'industry', array("fields" => "all"));
                    $industry         = '';
                    $term_id          = array();
                    if (sizeof($project_category) > 0) {
                        $count = 0;
                        foreach ($project_category as $lat_project) {
                            $term_id[]   = $lat_project->term_id;
                            $custom_link = get_field('custom_url', $lat_project->taxonomy . '_' . $lat_project->term_id);
                            $term_link   = get_term_link($lat_project->slug, 'industry');
                            if ($custom_link == '') {
                                $custom_link = $term_link;
                            }
                            if ($count == 0) {
                                $industry = '<a href="' . $custom_link . '">' . $lat_project->name . '</a>';
                            }

                            $count++;
                        }
                    }
                    echo '<li class="active"><a href="' . get_permalink($page) . '">' . get_post_type_object(get_post_type($post))->label . '</a></li>';
                    if ($industry != '') {
                        echo '<li class="active">' . $industry . '</li>';
                    }
                } elseif (is_singular('products')) {
                    $page             = get_field('product_archive', 'option');
                    $product_category = wp_get_post_terms(get_the_ID(), 'product_category', array("fields" => "all"));

                    $prod_cat = '';
                    $term_id  = array();
                    if (sizeof($product_category) > 0) {
                        $count = 0;
                        foreach ($product_category as $lat_product) {
                            $term_id[]   = $lat_product->term_id;
                            $custom_link = get_field('custom_url', $lat_product->taxonomy . '_' . $lat_product->term_id);
                            //$pageSlug       = basename($custom_link);
                            $pageIdfromslug = url_to_postid($custom_link);
                            $current_post   = get_post($pageIdfromslug);
                            $postParent_id  = $current_post->post_parent;
                            $postParent     = get_post($postParent_id);
                            if ($postParent->post_parent > 0) {
                                $postparent_title = $postParent->post_title;
                                $postparent_link  = get_permalink($postParent_id);
                            }
                            $term_link = get_term_link($lat_product->slug, 'product_category');

                            if ($custom_link == '') {
                                $custom_link = $term_link;
                            }
                            if ($count == 0) {
                                if ($postparent_title != "") {
                                    $prod_cat = '<a href="' . $postparent_link . '">' . $postparent_title . '</a>';
                                }
                                $prod_cat .= '<a href="' . $custom_link . '">' . $lat_product->name . '</a>';
                            }

                            $count++;
                        }
                    }
                    echo '<li class="active"><a href="' . get_permalink($page) . '">' . get_post_type_object(get_post_type($post))->label . '</a></li>';
                    if ($prod_cat != '') {
                        echo '<li class="active">' . $prod_cat . '</li>';
                    }
                } elseif (is_singular('resources')) {
                    $page = get_field('resource_archive', 'option');
                    echo '<li class="active"><a href="' . get_permalink($page) . '">' . get_post_type_object(get_post_type($post))->label . '</a></li>';
                } else {
                    echo '<li class="active"><a href="' . get_option('home') . '/' . get_post_type_object(get_post_type($post))->name . '">' . get_post_type_object(get_post_type($post))->label . '</a></li>';
                }
                if ($post->post_parent) {
                    $home = get_page(get_option('page_on_front'));
                    for ($i = count($post->ancestors) - 1; $i >= 0; $i--) {
                        if (($home->ID) != ($post->ancestors[$i])) {
                            echo '<li><a href="';
                            echo get_permalink($post->ancestors[$i]);
                            echo '">';
                            echo get_the_title($post->ancestors[$i]);
                            echo "</a></li>";
                        }
                    }
                }
            } elseif ($post_type == 'products') {
                $page             = get_field('product_archive', 'option');
                $product_category = wp_get_post_terms(get_the_ID(), 'product_category', array("fields" => "all"));
                $prod_cat         = '';
                $term_id          = array();
                if (sizeof($product_category) > 0) {
                    $count = 0;
                    foreach ($product_category as $lat_product) {
                        $term_id[]   = $lat_product->term_id;
                        $custom_link = get_field('custom_url', $lat_product->taxonomy . '_' . $lat_product->term_id);
                        //$pageSlug       = basename($custom_link);
                        $pageIdfromslug = url_to_postid($custom_link);
                        $current_post   = get_post($pageIdfromslug);
                        $postParent_id  = $current_post->post_parent;
                        $postParent     = get_post($postParent_id);
                        if ($postParent->post_parent > 0) {
                            $postparent_title = $postParent->post_title;
                            $postparent_link  = get_permalink($postParent_id);
                            $postParent_Id2   = $postParent->post_parent;
                            $postParent2      = get_post($postParent_Id2);
                            if ($postParent2->post_parent > 0) {
                                $postParent_title2 = $postParent2->post_title;
                                $postparent_link2  = get_permalink($postParent_Id2);
                            }
                        }

                        $term_link = get_term_link($lat_product->slug, 'product_category');
                        if ($custom_link == '') {
                            $custom_link = $term_link;
                        }
                        if ($count == 0) {
                            if ($postParent_title2 != "") {
                                $prod_cat = '<a href="' . $postparent_link2 . '">' . $postParent_title2 . '</a>';
                            }
                            if ($postparent_title != "") {
                                $prod_cat .= '<a href="' . $postparent_link . '">' . $postparent_title . '</a>';
                            }

                            $prod_cat .= '<a href="' . $custom_link . '">' . $lat_product->name . '</a>';
                        }

                        $count++;
                    }
                }
                echo '<li class="active"><a href="' . get_permalink($page) . '">' . get_post_type_object(get_post_type($post))->label . '</a></li>';
                if ($prod_cat != '') {
                    echo '<li class="active">' . $prod_cat . '</li>';
                }
            }
            if (is_single()) {
                echo '<li class="active">' . get_the_title($post->ID) . '</li>';
            }

        } elseif (is_page() && $post->post_parent) {
            $home = get_page(get_option('page_on_front'));
            for ($i = count($post->ancestors) - 1; $i >= 0; $i--) {
                if (($home->ID) != ($post->ancestors[$i])) {
                    echo '<li><a href="';
                    echo get_permalink($post->ancestors[$i]);
                    echo '">';
                    echo get_the_title($post->ancestors[$i]);
                    echo "</a></li>";
                }
            }
            echo '<li class="active">' . get_the_title($post->ID) . '</li>';
        } elseif (is_page()) {
            echo '<li class="active">' . get_the_title($post->ID) . '</li>';
        } elseif (is_404()) {
            echo '<li class="active">404</li>';
        }
        echo '</ol>';
    }
}

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.