!
也想出现在这里? 联系我们
广告位

WordPress 添加面包屑导航(Breadcrumb)丨支持谷歌结构化数据测试

面包屑导航的两个好处:

  1、使用户明白自己在哪个位置,以免遗失在'创客云'的某个角落。

  2、为了谷歌结构化,让体验更友好,结构清晰。

首页预览:

文章页面1 H w ; h I : 4

谷歌结构化数据测试工具页面:

方法如下:

将以下代码插A v [ ] B 1 F入 functions.php 文件的 ?> 后面。

  1. <?php
  2. /*
  3. * WordPress 添加面包屑导航,支持谷歌结构化数据测试!
  4. *http://wY G N { Eww.weeiy.com/wordpress-adw D - R K bd-a-breadcrumb.HTML
  5. * 代码转载B n L d U X自:http://dimox.net/worh [ \ ) z F Vdpress-breadcrumbs-without-a-plugin/
  6. */
  7. function dimox_breadcrumbs() {
  8. /*=微Fan建议,请保持下列设置,以免产生错误!=*/
  9. $text['home'] = 'i ? U Y E [ ~首页'; // 文字为“主页”链接
  10. $text['category'] = '文章目录 "%9 i t C ^s"';c Q ? . // 文本的分类页面
  11. $text['se\ J C ) @ o @ Q Garch'] = '搜索结` b # ` P 0果 "%s" Query'; // 文本的搜索结果页面
  12. $text['tag'] = '文章标签 "%s"'; // 文本标9 * e q a签页
  13. $text['auK U n Y D t 6 7 tthor']J o + 8 = N = '文v x K R _章发表于 %s'; // 文本的作者页面
  14. $n ( utext['404'] = 'Error 404'; // 文本404页
  15. $show_current = 1; // 1 - 显示当前文章/页/类别标题面包屑, 0 - 不显示
  16. $show_on_home = 0; // 1 - 在主页上显示面包屑, 0 - 不显示
  17. $show_home_link = 1; // 1 - 显示“主页”链接, 0 - 不显示
  18. $show_title = 1; // 1 - 显示标题的链接, 0 - 不显示
  19. $delimiter =2 t - B A ' <small>&raquo;</small&gt8 t \ Q 0 . R ;; '; // 面包屑之间的分隔符
  20. $before = '<span class="current">'; // 在当前标签之前
  21. $after = '</span>';` ( K // 标签后面
  22. /* === END OF OPTIONS === */
  23. global $post;
  24. $home7 ~ g & R_link = home_url('/');
  25. $link_before = '&lP d { A I \ ! lt;span typeof=&` m P I Pquot;v:Breadcrumb"&g \ E k | Qgt;';
  26. $link_after = '</span>';
  27. $link_attr = ' reX & \ S C 4l="v:url" property="v:titll e s 0e"';
  28. $link = $link_before . '<a' . $link_attr . ' href="%1$s" rel="external nofollow" >%2$s</a>' . $link_after;
  29. $parent_id =i i 7 A ` K $pareo 0 c i I e J #nt_id_2 = $post->post_parent;
  30. $front- ~ d O N ? 6page_id = get_option('page_on_front');
  31. if (is_home() || is_front_page()- y C E 81; $ ) Q T V W23;
  32. if ($show_on_home == 1) echo '<div class="breadcrumbs"><a href=&quot$ % O u;' . $home_link . '&quF e r 5 yot;>' . $textz @ . h } z 6 `091;'home'] . '</a></div>';
  33. } else {
  34. echo '&3 e S dlt;div class="breadcrumbs&quotm _ x z; xmlns:v@ ] F e J X="http://rdf.data-vocabulary.org/#">';
  35. if ($show_home_lj 0 )ink == 1) {
  36. echo '<a href="' . $home_link . '" rel="v:url" property=&quoW I j 5 = % Dt;v:title">' . $text[\ V ~ D r 8 Q;'! j T Z d w .home'] . '</a>';
  37. if ($frontpage_id == 0 || $parent_id != $frontpage_id) echo $delimA b ?iter;
  38. }
  39. if ( is_category(&a R X d \ , [#041; ) {
  40. $this_cat = get_category(get_query_var('cat'), false);
  41. if ($this_cat->parent != 0) {
  42. $cats = get_category_parents($this_cat-&| ? r , fgt;parent, TRUE, $delimiter);
  43. if ($show_current == 0) $cats = preg_r[ , l 5eplace("#^(.+)$delimiter$#", "$1&qa p uuot;, $cats);
  44. $cats = str_replace('<a', $link_before . '<a' . $link_aY \ Q ? R 9 i 8 Jttr, $cats);
  45. $cats = str_replace('</a>', '</a>' . $link5 } { E @_after, $cats);
  46. if &f ? r 0 p#040;$show_title == 0) $ca` j Ets = preg_replace('/ titley H 9 3 G 3 ! S="(.*?)"/', '', $cats);
  47. echo $cats;
  48. }
  49. if &W d M#040;$sh4 0 ! ! d ) _ M Iow_cur$ z y c B 4 # ) 0r1 ] E b 6 6ent == 1) echo $before . sprinj { G 8 7 g itf($text['category'], single_caY F ` Tt_title('', false)) . $after;
  50. } elseif ( is_search() ) {
  51. echo $before . sprintf($text['search'], get_O 8 /search_query()) . $after;
  52. = m B 1 ^ , ~ 9 d25; elseif ( is_day() ) {
  53. ech9 3 F U j X p v oo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
  54. echo sprintf($link, g( & H d )et_month_link(get_the_time('Y'),get_the_time('m'&W ? H t - y#041;&G { - n L 4 T#041;, get_the_time('F')) . $delimiter;
  55. echo $before . get_the_time('d') . $after;
  56. } elseif ( is_month() ) , 0 ` ` 4 %23;
  57. echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
  58. echo $before . get_the_time('F') . $after;
  59. } elseif ( is_year() ) {
  60. echo $before . get_the_time('Y') . $after;
  61. } elseif ( is_single() && !is_attachment() ) {
  62. if ( get_postV ~ * t g_type(V ! s D ] } V041; != 'post' ) &% k [ $ T w q ?#123;
  63. $post_type = get_post_type_object(get_post_type());
  64. $7 f ; $ j \ o \ 4slug = $post_type->rewrite;
  65. printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular- h V : c t 6 3 0_name);
  66. if ($show_current == 1) echo $delimiter . $before . geX \ W q ] | Y / wt_the_title() . $after;
  67. } else {
  68. $cat = ge= l & Tt_the_category({ 5 G & K Q W 4); $cat = $cat[0];X c ]
  69. $cats = get_category_parents($cat, TRUE, $delimiter);
  70. if , . c y u040;u b [ 4 y h 0 Z$show_current == 0) $cats = preg_repn s w u r = Z t Klace("#^(.+)$delimiter$#", &quotn / k V + \ 9 \ );$1", $cats);
  71. $cats = str_replace('<a', $link_beP Z = X + 5 -fore . '<a' ._ ( \ Q $link_attrN X Y i, $cY X D o | } h Gats);
  72. $cats = str_replace('</a>', '</a>' . $link_after, $cats);
  73. if ($show_title == 0) $cats = pregK + ] i_replace('/ title="(I l I a [ I 8.*?)"/'A U h 8 ! I X, '', $cats);
  74. echo $cats;
  75. if ($show_cur) j 9 w X P 0 B Zrente W b X - == 1) echo $bm } {efore . get_the_title() . $after;
  76. }
  77. } elseif ( !is_single() && !is_page() && get_post_type(A 8 k P j $ G041; != '\ d g C \ S /post' && !is_404()\ ) ` ~ y g Y Z 3 ) {- z E K s
  78. $post_type = g: m W o = G 6et_post_type_object(get_post_type());
  79. echo $) - 1before . $po= 9 j { 6st_typ$ B \ [ 4 = 9 Be->labels->si. 1 Z ^ z J mngular_name . $after;
  80. } elseif ( is_attachment() ) &i ? | % 4#123;
  81. $parent = get_post($parent_id);[ % y ( 0 *
  82. $cat = get_the_categoryp ? 5 F b v ] Y040;$parent->ID); $cat = $caQ ! *t[0];
  83. if ($cat) {
  84. $cats = get_category_pv ! carents($cat, TRUE,- ~ j d 5 5 e $delimiter);
  85. $cats = str_replace('<a', $link_before . '<a' . $l/ g @ & #ink_attr, $cats);
  86. $cats = str_replace(E - i 8 $ ( @ n M'</a&3 r [ . & ; Z W 5gt;', '</a>' . $link_after, $cats);
  87. if ($show_title == 0) $cats = preg_replace('/ title="(.1 d F ) M = J*?)&a x ( 7 * ^ s ? \quot;/', 'g O 2', $cats)8 + 2 + x g 0;
  88. echo $cats;
  89. }
  90. printf($link, get7 & X_permalink($parent), $parent->post_title);
  91. if ($show_current == 1) echo $delimiter . $before . get_the_title(^ w z ) r c) . $after+ z [ u 1 !;
  92. } elseif ( is_page()U \ D q &&ampc { { R; !$parent_id ) {
  93. if ($show_current == 1) echo $before . ge^ s d { g Ct_the_title() . $after;
  94. } elseif ( is_page() && $parent_id ) {
  95. if ($parent_id != $frontp5 x 8 9 ) *age_id) {
  96. $breadcrumbs = array();
  97. while ($parent_id: ( $ , T ^041; {
  98. $page = gQ F T l v y J K aet_page($parent_id);
  99. if ($parent_id != $frontpage_id) {
  100. $breadcrumbs[] = sprintf($link, get_permalink($page->ID), geO k Z I ~ z n O @t_the_title($page->ID));
  101. }
  102. $pW q ] # Rarent_id = $page->post_parer Q - [ }nt;
  103. }
  104. $b- o = F 7 F f ~ {readcrumbs = array_reverse($breadcruy g N ( )mbsq r [ H p y l);
  105. for ($i = 0; $i < count($breadcrumbs); $i++) {
  106. echo $breadcrumbs[$ia y 9093;;
  107. if ($i != count($breadcrumbs)-1)+ @ p D; echo $delimiter;
  108. }
  109. }
  110. if ($show_current == 1)^ m f r 6 k; {
  111. if ($show_home_link == 1 || 9 J D ; 3 u l 30;$parent_id_2 != 0 &aB r u v Rmp;&` { : g { K K #amp; $parent_id_2 != $frontpage_id)) ech; C T $ \o $delimiter;
  112. echo $before . get_the_W 6 ytitle() . $after;
  113. }
  114. } elseif ( is_tag() &r r } # !#041; {
  115. echo| ^ & 4 $before . sprintf($text['tag'~ o Y d G 0],A b B single_tag_title(- ~ , Z [ & l c'', false)) . $after;
  116. } elseif ( is_author()! N 9; ) {
  117. global $author;
  118. $userdata = get_user~ ? $ l # l C Ydata($author);
  119. echo $before . sprintf($text['author'V i c m 1 A ~ |], $userdata->display_name) . $after;
  120. } elseif ( is_404() ) {
  121. echo $before . $text['404'] . $after;
  122. } elseC 3 u t = Sif ( has_post_D A e L I \ 7 $ gformat() &&F / ~amp; !is_singular() ) {
  123. echo get_post_format_stringW k S Y Q V040; get_post_format() );
  124. }H 8 3 - i .
  125. if ( get_query_var(I ` A'paged') ) {
  126. if ( is_categoryJ A @ @ %040;) || is_day(u / X [ - + _ R041; || is_mon) 8 e + i 0th() || is_year() |K G T a| is_search() || is_tag() || is_author() )Q : x | echo ' (';
  127. echo __D ^ 0 & W040;'Page') . ' ' . get_A I . , pquery_var('paged');
  128. if ( is_category() ||5 B M e q { Y r f is_day() || is_month() || is_year() || is_search() || is_c q o K C T Btag() || is_author() ^ q f x 9 N041; echo ')';
  129. }
  130. echo '</div><!-- .P Y $ T X : }breadcrumbs -->';
  131. F ] q A w1! . _ 8 Z & . ` a25;
  132. } // end dimox_breadcrumbs()
  133. ?>

调用方法:

在你需要调用的地方插入

  1. <?php if (function_exists('dimox_breadcrumbs')) dim; E J R +ox_br9 y = 4 Eeadcrumbs(); ?>

  另外需要在样式表中添加 CSS 样式,不然会影响版面,例如:

  1. .breadcrumbs s j c { A23;
  2. margin: 0 0 5px;
  3. padding: 9pxM O J : = ! 20px 7px;
  4. background-color: #f7f7f7;
  5. }

可根据自身情况进行修改和h Q ;美化。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress站点健康提示REST API遇到了错误

2022-11-11 15:09:04

WordPress教程

如何禁用WordPress中古腾堡编辑器的全屏模式

2022-11-11 15:49:29

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索