首页 文章

没有插件的Wp nav菜单痕迹

提问于
浏览
0

如何使用导航菜单项 Headers 而不是页面 Headers 创建面包屑使用自定义代码而不使用wordpress中的插件 .

4 回答

  • 2

    将此代码放在functions.php文件中 .

    function the_breadcrumb() {
        global $post;
        echo '<ul id="breadcrumbs">';
        if (!is_home()) {
            echo '<li><a href="';
            echo get_option('home');
            echo '">';
            echo 'Home';
            echo '</a></li><li class="separator"> / </li>';
            if (is_category() || is_single()) {
                echo '<li>';
                the_category(' </li><li class="separator"> / </li><li> ');
                if (is_single()) {
                    echo '</li><li class="separator"> / </li><li>';
                    the_title();
                    echo '</li>';
                }
            } elseif (is_page()) {
                if($post->post_parent){
                    $anc = get_post_ancestors( $post->ID );
                    $title = get_the_title();
                    foreach ( $anc as $ancestor ) {
                        $output = '<li><a href="'.get_permalink($ancestor).'" title="'.get_the_title($ancestor).'">'.get_the_title($ancestor).'</a></li> <li class="separator">/</li>';
                    }
                    echo $output;
                    echo '<strong title="'.$title.'"> '.$title.'</strong>';
                } else {
                    echo '<li><strong> '.get_the_title().'</strong></li>';
                }
            }
        }
        elseif (is_tag()) {single_tag_title();}
        elseif (is_day()) {echo"<li>Archive for "; the_time('F jS, Y'); echo'</li>';}
        elseif (is_month()) {echo"<li>Archive for "; the_time('F, Y'); echo'</li>';}
        elseif (is_year()) {echo"<li>Archive for "; the_time('Y'); echo'</li>';}
        elseif (is_author()) {echo"<li>Author Archive"; echo'</li>';}
        elseif (isset($_GET['paged']) && !empty($_GET['paged'])) {echo "<li>Blog Archives"; echo'</li>';}
        elseif (is_search()) {echo"<li>Search Results"; echo'</li>';}
        echo '</ul>';
    }
    

    在想要显示面包屑的任何地方添加 <?php the_breadcrumb(); ?> . 请享用 .

  • 0

    您可以为这些页面使用自定义字段,并在面包屑代码中获取该自定义字段 . 像这样:

    <div class="breadcrumb">
    <?php if(is_home())
    {
    ?>
    <a href="<?php echo site_url();?>">Home</a>
    <?php
    }
    else
    {
    ?>
    <a href="<?php echo site_url();?>">Home</a>-><a href="<?php echo get_permalink(get_the_ID());?>"><?php echo $page_brdcrmb = get_post_meta(get_the_ID(), 'custom', true); ?> </a>
    <?php } ?>
    </div>
    
  • 0

    如果您编写自己的主题,这是一个放在 functions.php 中的示例,并在模板中添加此代码 <?php my_breadcrumb(); ?> .

    /*
    Return the string menu title of a page
    @Param : $id integrer page ID
    @return: string menu page title or page title if not found
    */
    function my_getmenu_title( $id) {
        $title = get_the_title() ; // in case we don't found it
        $menu = wp_get_nav_menu_object( 77 );   // Important this is your menu ID, 
                                               // should be better to find the active 
                                               // menu to be generic :-( 
        if( $menu ) {
            $items = wp_get_nav_menu_items( $menu); 
            foreach ( (array) $items as $key => $menu_item ) {
                if( $menu_item->object_id==$id ) {
                    $title = $menu_item->title;
                    break;
                }
            }
        }
        return $title;
    }
    /* custom breadcrumb */
        function my_breadcrumb($title = false) {
            global $pmc_data;
            $breadcrumb = '';
            if (!is_home()) {
                if($title == false){
                    $breadcrumb .= '<a href="';
                    $breadcrumb .=  home_url();
                    $breadcrumb .=  '">';
                    $breadcrumb .= __('Home', 'mytheme');
                    $breadcrumb .=  "</a> &#187; ";
                }
                if (is_single()) {
                    if (is_single()) {
                        $name = '';
                        if(!get_query_var($pmc_data['port_slug']) && !get_query_var('product')){
                            $category = get_the_category(); +
                            $category_id = get_cat_ID($category[0]->cat_name);
                            $category_link = get_category_link($category_id);                   
                            $name = '<a href="'. esc_url( $category_link ).'">'.$category[0]->cat_name .'</a>';
                        }
                        else{
                            $taxonomy = 'portfoliocategory';
                            $entrycategory = get_the_term_list( get_the_ID(), $taxonomy, '', ',', '' );
                            $catstring = $entrycategory;
                            $catidlist = explode(",", $catstring);  
                            $name = $catidlist[0];
                        }
                        if($title == false){
                            $breadcrumb .= $name .' &#187; <span>'. get_the_title().'</span>';
                        }
                        else{
                            $breadcrumb .= get_the_title();
                        }
                    }   
                } elseif (is_page()) {
                // This is where you call a special function to get menu title instead of page
                    $breadcrumb .=  '<span>'.my_getmenu_title( get_the_ID()).'</span>';
                }
                elseif(get_query_var('portfoliocategory')){
                    $term = get_term_by('slug', get_query_var('portfoliocategory'), 'portfoliocategory'); $name = $term->name; 
                    $breadcrumb .=  '<span>'.$name.'</span>';
                }   
                else if(is_tag()){
                    $tag = get_query_var('tag');
                    $tag = str_replace('-',' ',$tag);
                    $breadcrumb .=  '<span>'.$tag.'</span>';
                }
                else if(is_search()){
                    $breadcrumb .= __('Search results for ', 'pmc-themes') .'"<span>'.get_search_query().'</span>"';            
                } 
                else if(is_category()){
                    $cat = get_query_var('cat');
                    $cat = get_category($cat);
                    $breadcrumb .=  '<span>'.$cat->name.'</span>';
                }
                else if(is_archive()){
                    $breadcrumb .=  '<span>'.__('Archive','mytheme').'</span>';
                }   
                else{
                    $breadcrumb .=  __('Home','mytheme');
                }
                if(function_exists('is_shop')){
                    if(is_product() || is_product_category() || is_shop()){
                        $breadcrumb = ''; 
                        woocommerce_breadcrumb();
                    }
                }
            }
            return $breadcrumb ;
        }
    
  • 0

    这是自定义breadcrumb功能,不使用wordpress中的任何插件 . 它可以帮助您轻松地在页面上添加痕迹,只需要根据需要添加css .

    Function Callback:

    <?php 
            custom_breadcrumbs(); 
        ?>
    

    You need to add this function in functions.php

    /*========== Breadcrumb ========== */
        // Breadcrumbs
        function custom_breadcrumbs() {
    
            // Settings
            $separator          = '&gt;';
            $breadcrums_id      = 'breadcrumbs';
            $breadcrums_class   = 'breadcrumbs';
            $home_title         = 'Homepage';
    
            // If you have any custom post types with custom taxonomies, put the taxonomy name below (e.g. product_cat)
            $custom_taxonomy    = 'product_cat';
    
            // Get the query & post information
            global $post,$wp_query;
    
            // Do not display on the homepage
            if ( !is_front_page() ) {
    
                // Build the breadcrums
                echo '<ul id="' . $breadcrums_id . '" class="' . $breadcrums_class . '">';
    
                // Home page
                echo '<li class="item-home"><a class="bread-link bread-home" href="' . get_home_url() . '" title="' . $home_title . '">' . $home_title . '</a></li>';
                echo '<li class="separator separator-home"> ' . $separator . ' </li>';
    
                if ( is_archive() && !is_tax() && !is_category() && !is_tag() ) {
    
                    echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . post_type_archive_title($prefix, false) . '</strong></li>';
    
                } else if ( is_archive() && is_tax() && !is_category() && !is_tag() ) {
    
                    // If post is a custom post type
                    $post_type = get_post_type();
    
                    // If it is a custom post type display name and link
                    if($post_type != 'post') {
    
                        $post_type_object = get_post_type_object($post_type);
                        $post_type_archive = get_post_type_archive_link($post_type);
    
                        echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . $post_type_archive . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
                        echo '<li class="separator"> ' . $separator . ' </li>';
    
                    }
    
                    $custom_tax_name = get_queried_object()->name;
                    echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . $custom_tax_name . '</strong></li>';
    
                } else if ( is_single() ) {
    
                    // If post is a custom post type
                    $post_type = get_post_type();
    
                    // If it is a custom post type display name and link
                    if($post_type != 'post') {
    
                        $post_type_object = get_post_type_object($post_type);
                        $post_type_archive = get_post_type_archive_link($post_type);
    
                        echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . $post_type_archive . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
                        echo '<li class="separator"> ' . $separator . ' </li>';
    
                    }
    
                    // Get post category info
                    $category = get_the_category();
    
                    if(!empty($category) && !is_single()) {
    
                        // Get last category post is in
                        $last_category = end(array_values($category));
    
                        // Get parent any categories and create array
                        $get_cat_parents = rtrim(get_category_parents($last_category->term_id, true, ','),',');
                        $cat_parents = explode(',',$get_cat_parents);
    
                        // Loop through parent categories and store in variable $cat_display
                        $cat_display = '';
                        foreach($cat_parents as $parents) {
                            $cat_display .= '<li class="item-cat">'.$parents.'</li>';
                            $cat_display .= '<li class="separator"> ' . $separator . ' </li>';
                        }
    
                    }
    
                    // If it's a custom post type within a custom taxonomy
                    $taxonomy_exists = taxonomy_exists($custom_taxonomy);
                    if(empty($last_category) && !empty($custom_taxonomy) && $taxonomy_exists) {
    
                        $taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy );
                        $cat_id         = $taxonomy_terms[0]->term_id;
                        $cat_nicename   = $taxonomy_terms[0]->slug;
                        $cat_link       = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy);
                        $cat_name       = $taxonomy_terms[0]->name;
    
                    }
    
                    // Check if the post is in a category
                    if(!empty($last_category)) {
                        echo $cat_display;
                        echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
    
                    // Else if post is in a custom taxonomy
                    } else if(!empty($cat_id)) {
    
                        echo '<li class="item-cat item-cat-' . $cat_id . ' item-cat-' . $cat_nicename . '"><a class="bread-cat bread-cat-' . $cat_id . ' bread-cat-' . $cat_nicename . '" href="' . $cat_link . '" title="' . $cat_name . '">' . $cat_name . '</a></li>';
                        echo '<li class="separator"> ' . $separator . ' </li>';
                        echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
    
                    } else {
    
                        echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
    
                    }
    
                } else if ( is_category() ) {
    
                    // Category page
                    echo '<li class="item-current item-cat"><strong class="bread-current bread-cat">' . single_cat_title('', false) . '</strong></li>';
    
                } else if ( is_page() ) {
    
                    // Standard page
                    if( $post->post_parent ){
    
                        // If child page, get parents 
                        $anc = get_post_ancestors( $post->ID );
    
                        // Get parents in the right order
                        $anc = array_reverse($anc);
    
                        // Parent page loop
                        foreach ( $anc as $ancestor ) {
                            $parents .= '<li class="item-parent item-parent-' . $ancestor . '"><a class="bread-parent bread-parent-' . $ancestor . '" href="' . get_permalink($ancestor) . '" title="' . get_the_title($ancestor) . '">' . get_the_title($ancestor) . '</a></li>';
                            $parents .= '<li class="separator separator-' . $ancestor . '"> ' . $separator . ' </li>';
                        }
    
                        // Display parent pages
                        echo $parents;
    
                        // Current page
                        echo '<li class="item-current item-' . $post->ID . '"><strong title="' . get_the_title() . '"> ' . get_the_title() . '</strong></li>';
    
                    } else {
    
                        // Just display current page if not parents
                        echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '"> ' . get_the_title() . '</strong></li>';
    
                    }
    
                } else if ( is_tag() ) {
    
                    // Tag page
    
                    // Get tag information
                    $term_id        = get_query_var('tag_id');
                    $taxonomy       = 'post_tag';
                    $args           = 'include=' . $term_id;
                    $terms          = get_terms( $taxonomy, $args );
                    $get_term_id    = $terms[0]->term_id;
                    $get_term_slug  = $terms[0]->slug;
                    $get_term_name  = $terms[0]->name;
    
                    // Display the tag name
                    echo '<li class="item-current item-tag-' . $get_term_id . ' item-tag-' . $get_term_slug . '"><strong class="bread-current bread-tag-' . $get_term_id . ' bread-tag-' . $get_term_slug . '">' . $get_term_name . '</strong></li>';
    
                } elseif ( is_day() ) {
    
                    // Day archive
    
                    // Year link
                    echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ' Archives</a></li>';
                    echo '<li class="separator separator-' . get_the_time('Y') . '"> ' . $separator . ' </li>';
    
                    // Month link
                    echo '<li class="item-month item-month-' . get_the_time('m') . '"><a class="bread-month bread-month-' . get_the_time('m') . '" href="' . get_month_link( get_the_time('Y'), get_the_time('m') ) . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ' Archives</a></li>';
                    echo '<li class="separator separator-' . get_the_time('m') . '"> ' . $separator . ' </li>';
    
                    // Day display
                    echo '<li class="item-current item-' . get_the_time('j') . '"><strong class="bread-current bread-' . get_the_time('j') . '"> ' . get_the_time('jS') . ' ' . get_the_time('M') . ' Archives</strong></li>';
    
                } else if ( is_month() ) {
    
                    // Month Archive
    
                    // Year link
                    echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ' Archives</a></li>';
                    echo '<li class="separator separator-' . get_the_time('Y') . '"> ' . $separator . ' </li>';
    
                    // Month display
                    echo '<li class="item-month item-month-' . get_the_time('m') . '"><strong class="bread-month bread-month-' . get_the_time('m') . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ' Archives</strong></li>';
    
                } else if ( is_year() ) {
    
                    // Display year archive
                    echo '<li class="item-current item-current-' . get_the_time('Y') . '"><strong class="bread-current bread-current-' . get_the_time('Y') . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ' Archives</strong></li>';
    
                } else if ( is_author() ) {
    
                    // Auhor archive
    
                    // Get the author information
                    global $author;
                    $userdata = get_userdata( $author );
    
                    // Display author name
                    echo '<li class="item-current item-current-' . $userdata->user_nicename . '"><strong class="bread-current bread-current-' . $userdata->user_nicename . '" title="' . $userdata->display_name . '">' . 'Author: ' . $userdata->display_name . '</strong></li>';
    
                } else if ( get_query_var('paged') ) {
    
                    // Paginated archives
                    echo '<li class="item-current item-current-' . get_query_var('paged') . '"><strong class="bread-current bread-current-' . get_query_var('paged') . '" title="Page ' . get_query_var('paged') . '">'.__('Page') . ' ' . get_query_var('paged') . '</strong></li>';
    
                } else if ( is_search() ) {           
                    // Search results page
                    echo '<li class="item-current item-current-' . get_search_query() . '"><strong class="bread-current bread-current-' . get_search_query() . '" title="Search results for: ' . get_search_query() . '">Search results for: ' . get_search_query() . '</strong></li>';
    
                } elseif ( is_404() ) {
    
                    // 404 page
                    echo '<li>' . 'Error 404' . '</li>';
                }
    
                echo '</ul>';
    
            }
    
        }
    

相关问题