breadcrumb.php 4.31 KB
<?php 
/**
 * Generate breadcrumbs
 * @author CodexWorld
 * @authorURL www.codexworld.com
 */


function get_breadcrumb() {
    if ( function_exists( 'yoast_breadcrumb' ) ) {
        ob_start();
        yoast_breadcrumb( '<p id="breadcrumb" class="meta-info">', '</p>' );
        $breadcrumb = trim( ob_get_clean() );

        // if ( is_singular() )
            // $breadcrumb = trim( preg_replace( '/ ' . WPSEO_Options::get( 'breadcrumbs-sep' ) . ' <span class="breadcrumb_last" aria-current="page">(.*)<\/span>/i', '',
            //     $breadcrumb ) );



            $main_nav_items = wp_get_nav_menu_items('Main Menu');
            $post_id = get_the_ID();

            $parents = [];
            $my_parent = null;
            
            foreach($main_nav_items as $ni) {
                if($ni->menu_item_parent == '0') {
                    $parents[$ni->ID] = $ni;
                }
                if($ni->object_id == $post_id) {
                    $my_parent = $ni->menu_item_parent;
                }
                $parent_postID = wp_get_post_parent_id($post_id);
                if($ni->object_id == $parent_postID) {
                    $my_parent = $ni->menu_item_parent;
                }
            }
      

            $bread = explode(' | ', $breadcrumb);

            array_pop($bread);

            // $new_bread[] = $bread[0];

            // var_dump($bread[0]);exit;

            $categories = get_the_terms(null, 'category');
            
            if(is_array($categories)) {
                foreach($categories as $cat) {
                    $parents_from_cat = get_field('parent_pages', $cat);
                    if($parents_from_cat) {
                        break;
                    }
                }
            }

            if(get_locale() == 'fr_FR') {
                $new_bread[] = "<p id='breadcrumb' class='meta-info'><span><span><a href='/'>Accueil</a></span>";
            } else {
                $new_bread[] = "<p id='breadcrumb' class='meta-info'><span><span><a href='/'>Home</a></span></span>";
            }

            if($parents_from_cat) {

                foreach($parents_from_cat as $pcat) {
                    
                    $parent_post = url_to_postid($pcat);
                    if($parent_post) {
                        $parent_post = get_post($parent_post);
                        $pcat_ansests = get_post_ancestors($parent_post);
                        if(is_array($pcat_ansests)) {
                            $pcat_ansests =  array_reverse($pcat_ansests);
                            foreach($pcat_ansests as $ansestor) {
                                $ansestor_post = get_post($ansestor);
                                if($ansestor_post) {
                                    $new_bread[] = "<span><a href='".get_permalink($ansestor)."'>".$ansestor_post->post_title."</a></span>";
                                }
                            }
                        }
                        $new_bread[] = "<span><a href='".get_permalink($parent_post->ID)."'>".$parent_post->post_title."</a></span>";
                    }

                }

            } else {

                if(is_single()) {

                    $parent_post = get_field('latest_news_and_stories_page', 'option');

                    if($parent_post) {

                        // $parent_post = url_to_postid($parent_post);

                        // if($parent_post) {

                            $parent_post = get_post($parent_post);

                            if($parent_post) {

                                $new_bread[] = "<span><a href='".get_permalink($parent_post->ID)."'>".$parent_post->post_title."</a></span>";

                            }
                        // }
                    }

                } else {
                   
                    if(isset($parents[$my_parent])) {
                        $new_bread[] = "<span>".$parents[$my_parent]->post_title."</span>";
                    }
                
        
                    if(isset($bread[1])) {
                        $new_bread[] = $bread[1];
                    }
    
                    if(isset($bread[2])) {
                        $new_bread[] = $bread[2];
                    }

                }


            }

            $breadcrumb = implode(' | ', $new_bread);

        echo $breadcrumb;

        ?>


        <?php
    }
}