没有插件的Wp nav菜单痕迹

时间:2014-08-19 10:54:27

标签: wordpress breadcrumbs

如何使用导航菜单项标题而非使用自定义代码而不使用wordpress中的插件来创建使用导航菜单项标题的痕迹。

4 个答案:

答案 0 :(得分: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(); ?>添加到您想要显示面包屑的任何位置。享受。

答案 1 :(得分: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>

答案 2 :(得分: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 ;
    }

答案 3 :(得分:0)

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

功能回调:

    <?php 
        custom_breadcrumbs(); 
    ?>

您需要在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>';

        }

    }