同乐儿

  1. 首页
  2. 代码
wordpress面包屑导航制作(含非插件方法)
发布 | 1年前 (2017-09-07) | 阅读数:569 | 评论数:0 | 来源:同乐儿

引言:此文由子域名转移而来,因为细微强迫症和放弃子域名而不舍得完全丢弃,所以将会逐步第二次转移文章到主域名上来,二者主题(阿里白秀和D8)均来自大前端,追求完美的同时有一丝小懒,主题就不换了,D8主题用起来挺好。

众所周知,面包屑导航是一个可以指引用户去向、非常友好的导航,不仅能让用户浏览网页时来去自如,还对搜索引擎优化SEO非常友好,因此,wordpress网站善于利用面包屑导航会起到百利而无一害的效果。

相对wordpress面包屑导航制作的方法有三种,可以直接将面包屑导航插入到代码中、也可以利用functions.php全局定义面包屑导航然后再进行调用,为了简便省去代码的麻烦,当然还可以使用Breadcrumb NavXT插件制作wordpress面包屑导航。具体方法如下:

一、直接在相关页面添加面包屑导航代码

  1. <div class="mbx-dh">
  2. 当前位置:<a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a> &raquo;
  3. <?php
  4. if( is_single() ){
  5. $categorys = get_the_category();
  6. $category = $categorys[0];
  7. echo( get_category_parents($category->term_id,true,' &raquo; ') );
  8. the_title();
  9. elseif ( is_page() ){
  10. the_title();
  11. elseif ( is_category() ){
  12. single_cat_title();
  13. elseif ( is_tag() ){
  14. single_tag_title();
  15. elseif ( is_day() ){
  16. the_time('Y年Fj日');
  17. elseif ( is_month() ){
  18. the_time('Y年F');
  19. elseif ( is_year() ){
  20. the_time('Y年');
  21. elseif ( is_search() ){
  22. echo $s.' 的搜索结果';
  23. }
  24. ?>
  25. </div>

二、利用functions.php全局定义再调用面包屑导航

  1. //面包屑导航
  2. function mbw_breadcrumbs() {
  3.     $delimiter = '&raquo;';
  4.     $name = '您的位置:'.'<a href="'.home_url().'">首页</a>'; //text for the 'Home' link
  5.     $currentBefore = '<span>';
  6.     $currentAfter = '</span>';
  7.     if ( !is_home() && !is_front_page() || is_paged() ) {
  8.         echo '<div id="crumbs" class="breadcrumbs">';
  9.         global $post;
  10.         $home = get_bloginfo('url');
  11.         echo  . $name . ' ' . $delimiter . ' ';
  12.         if ( is_category() ) {
  13.             global $wp_query;
  14.             $cat_obj = $wp_query->get_queried_object();
  15.             $thisCat = $cat_obj->term_id;
  16.             $thisCat = get_category($thisCat);
  17.             $parentCat = get_category($thisCat->parent);
  18.             if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));
  19.             echo $currentBefore . ;
  20.             single_cat_title();
  21.             echo  . $currentAfter;
  22.         } elseif ( is_day() ) {
  23.             echo  . get_the_time('Y') . ' ' . $delimiter . ' ';
  24.             echo  . get_the_time('F') . ' ' . $delimiter . ' ';
  25.             echo $currentBefore . get_the_time('d') . $currentAfter;
  26.         } elseif ( is_month() ) {
  27.             echo  . get_the_time('Y') . ' ' . $delimiter . ' ';
  28.             echo $currentBefore . get_the_time('F') . $currentAfter;
  29.         } elseif ( is_year() ) {
  30.             echo $currentBefore . get_the_time('Y') . $currentAfter;
  31.         } elseif ( is_single() ) {
  32.             $cat = get_the_category(); $cat = $cat[0];
  33.             echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
  34.             echo $currentBefore;
  35.             the_title();
  36.             echo $currentAfter;
  37.         } elseif ( is_page() && !$post->post_parent ) {
  38.             echo $currentBefore;
  39.             the_title();
  40.             echo $currentAfter;
  41.         } elseif ( is_page() && $post->post_parent ) {
  42.             $parent_id  = $post->post_parent;
  43.             $breadcrumbs = array();
  44.             while ($parent_id) {
  45.                 $page = get_page($parent_id);
  46.                 $breadcrumbs[] =  . get_the_title($page->ID) . ;
  47.                 $parent_id  = $page->post_parent;
  48.             }
  49.             $breadcrumbs = array_reverse($breadcrumbs);
  50.             foreach ($breadcrumbs as $crumbecho $crumb . ' ' . $delimiter . ' ';
  51.             echo $currentBefore;
  52.             the_title();
  53.             echo $currentAfter;
  54.         } elseif ( is_search() ) {
  55.             echo $currentBefore .  . get_search_query() .  . $currentAfter;
  56.         } elseif ( is_tag() ) {
  57.             echo $currentBefore . ;
  58.             single_tag_title();
  59.             echo  . $currentAfter;
  60.         } elseif ( is_author() ) {
  61.             global $author;
  62.             $userdata = get_userdata($author);
  63.             echo $currentBefore . $userdata->display_name . $currentAfter;
  64.         } elseif ( is_404() ) {
  65.             echo $currentBefore . '错误 404' . $currentAfter;
  66.         }
  67.         if ( get_query_var('paged') ) {
  68.             if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';
  69.             echo __('Page') . ' ' . get_query_var('paged');
  70.             if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';
  71.         }
  72.         echo '</div>';
  73.     }
  74. }

调用方法:

  1. <?php if (function_exists('mbw_breadcrumbs')) mbw_breadcrumbs(); ?>

如果想美化下面包屑导航,可以添加上以下css样式即可。

  1. .mbx-dh {padding5px 10px;}

三、利用wordpress的Breadcrumb NavXT插件

安装好该Breadcrumb NavXT插件后,就可以用以下代码调用了:

  1. <div class="breadcrumbs">
  2. <?php if(function_exists('bcn_display')) {     bcn_display(); } ?>
  3. </div>

这个插件还可以设置,进入设置选项后,共有general、current item、posts&pages、categories、tags、date archives、miscellaneous等相关设置。

1.general设置(一般设置)

可以设置面包屑导航的分割符(Breadcrumb Separator)
Breadcrumb Max Title Length——设置面包屑导航标题的最大长度
Home Breadcrumb——主页的标题
Place the home breadcrumb in the trail:如果打勾的话表示在面包屑导航中显示主页,不打勾的话则不显示。
Home Title——填入主页的显示标题,默认是blog,你可以修改为你想要的标题。
Home Prefix——(主页前缀)可以在主页前面添加说明文字。
Home Suffix——(主页后缀)在主页后面添加说明文字
Home Anchor、Blog Anchor一般不需要修改,插件会自动生成链接。

2.current item设置

Link Current Item表示是否设置当前页面链接
Current Item Prefix和Current Item Suffix :当前页的前后缀
current Item Anchor默认就可以了
Paged Breadcrumb、Paged Prefix、Paged Suffix是用来设置页面的面包屑导航,设置方法同上。

3.posts&pages设置

Post Prefix、Post Suffix、Post Anchor、Page Prefix、Page Suffix、Attachment Prefix等选项的基本上设置方法同上,但是,Post Taxonomy Display如果勾选的话表示在按照主页-分类-子分类-文章等形式显示出来,如果不勾选的话表示只分按照主页-文章显示出来。Post Taxonomy表示按照什么来进行导航,有分类目录和标签可以选择。

4.categories设置

基本上设置方法同上

5.date archives这里可以修改文章日期分类面包屑导航显示样式。

6.miscellaneous选项里提供了Author、Search、404页面的面包屑导航设置。


如果觉得该作者的文章对你有帮助,请随意打赏给他。您的支持将鼓励作者继续创作!
打赏
X
打赏本文作者方式

微信扫一扫可留言


继续浏览有关 wordpress,wordpress seo,wordpress插件 的文章

分享至:




评论
  • 117 评论
  • 129 粉丝
  • 131 文章
  • 最新评论
    二呆说:看见岛有了点信号,我用的时候就是看对应网...
    123123123说:我试过了,没改成功,不着急用,看了qur...
    二呆说:6.0应该也行,时间太长忘记了,好像6....
    123123123说:能不能适配下emlog6.0
    二呆说:啥意思,背景就是简单的网页背景图片。。。
    随机热门
    标签
    wordpress (81) wordpress优化 (26) wordpress主题 (24) 原创 (23) wordpress插件 (21) wordpress教程 (18) wordpress seo (17) Typecho (14) Typecho插件 (11) 博客主题 (8) emlog插件 (6) wordpress维护 (6) emlog (6) CMS主题 (5) 企业主题 (4) DNSPod for emlog (3) 淘宝客主题 (3) 修订版本 (3) 自动保存 (3) 移动适配 (3)