面包屑导航的两个好处:
1、使用户明白自己在哪个位置,以免遗失在'创客云'的某个角落。
2、为了谷歌结构化,让体验更友好,结构清晰。
首页预览:
文章页面1 H w ; h I : 4:
方法如下:
将以下代码插A v [ ] B 1 F入 functions.php 文件的 ?> 后面。
- <?php
- /*
- * WordPress 添加面包屑导航,支持谷歌结构化数据测试!
- *http://wY G N { Eww.weeiy.com/wordpress-adw D - R K bd-a-breadcrumb.HTML
- * 代码转载B n L d U X自:http://dimox.net/worh [ \ ) z F Vdpress-breadcrumbs-without-a-plugin/
- */
- function dimox_breadcrumbs() {
- /*=微Fan建议,请保持下列设置,以免产生错误!=*/
- $text['home'] = 'i ? U Y E [ ~首页'; // 文字为“主页”链接
- $text['category'] = '文章目录 "%9 i t C ^s"';c Q ? . // 文本的分类页面
- $text['se\ J C ) @ o @ Q Garch'] = '搜索结` b # ` P 0果 "%s" Query'; // 文本的搜索结果页面
- $text['tag'] = '文章标签 "%s"'; // 文本标9 * e q a签页
- $text['auK U n Y D t 6 7 tthor']J o + 8 = N = '文v x K R _章发表于 %s'; // 文本的作者页面
- $n ( utext['404'] = 'Error 404'; // 文本404页
- $show_current = 1; // 1 - 显示当前文章/页/类别标题面包屑, 0 - 不显示
- $show_on_home = 0; // 1 - 在主页上显示面包屑, 0 - 不显示
- $show_home_link = 1; // 1 - 显示“主页”链接, 0 - 不显示
- $show_title = 1; // 1 - 显示标题的链接, 0 - 不显示
- $delimiter =2 t - B A ' <small>»</small>8 t \ Q 0 . R ;; '; // 面包屑之间的分隔符
- $before = '<span class="current">'; // 在当前标签之前
- $after = '</span>';` ( K // 标签后面
- /* === END OF OPTIONS === */
- global $post;
- $home7 ~ g & R_link = home_url('/');
- $link_before = '&lP d { A I \ ! lt;span typeof=&` m P I Pquot;v:Breadcrumb"&g \ E k | Qgt;';
- $link_after = '</span>';
- $link_attr = ' reX & \ S C 4l="v:url" property="v:titll e s 0e"';
- $link = $link_before . '<a' . $link_attr . ' href="%1$s" rel="external nofollow" >%2$s</a>' . $link_after;
- $parent_id =i i 7 A ` K $pareo 0 c i I e J #nt_id_2 = $post->post_parent;
- $front- ~ d O N ? 6page_id = get_option('page_on_front');
- if (is_home() || is_front_page()- y C E 81; $ ) Q T V W23;
- if ($show_on_home == 1) echo '<div class="breadcrumbs"><a href="$ % O u;' . $home_link . '&quF e r 5 yot;>' . $textz @ . h } z 6 `091;'home'] . '</a></div>';
- } else {
- echo '&3 e S dlt;div class="breadcrumbs"m _ x z; xmlns:v@ ] F e J X="http://rdf.data-vocabulary.org/#">';
- if ($show_home_lj 0 )ink == 1) {
- 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>';
- if ($frontpage_id == 0 || $parent_id != $frontpage_id) echo $delimA b ?iter;
- }
- if ( is_category(&a R X d \ , [#041; ) {
- $this_cat = get_category(get_query_var('cat'), false);
- if ($this_cat->parent != 0) {
- $cats = get_category_parents($this_cat-&| ? r , fgt;parent, TRUE, $delimiter);
- if ($show_current == 0) $cats = preg_r[ , l 5eplace("#^(.+)$delimiter$#", "$1&qa p uuot;, $cats);
- $cats = str_replace('<a', $link_before . '<a' . $link_aY \ Q ? R 9 i 8 Jttr, $cats);
- $cats = str_replace('</a>', '</a>' . $link5 } { E @_after, $cats);
- if &f ? r 0 p#040;$show_title == 0) $ca` j Ets = preg_replace('/ titley H 9 3 G 3 ! S="(.*?)"/', '', $cats);
- echo $cats;
- }
- 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;
- } elseif ( is_search() ) {
- echo $before . sprintf($text['search'], get_O 8 /search_query()) . $after;
- = m B 1 ^ , ~ 9 d25; elseif ( is_day() ) {
- ech9 3 F U j X p v oo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
- 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;
- echo $before . get_the_time('d') . $after;
- } elseif ( is_month() ) , 0 ` ` 4 %23;
- echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
- echo $before . get_the_time('F') . $after;
- } elseif ( is_year() ) {
- echo $before . get_the_time('Y') . $after;
- } elseif ( is_single() && !is_attachment() ) {
- if ( get_postV ~ * t g_type(V ! s D ] } V041; != 'post' ) &% k [ $ T w q ?#123;
- $post_type = get_post_type_object(get_post_type());
- $7 f ; $ j \ o \ 4slug = $post_type->rewrite;
- printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular- h V : c t 6 3 0_name);
- if ($show_current == 1) echo $delimiter . $before . geX \ W q ] | Y / wt_the_title() . $after;
- } else {
- $cat = ge= l & Tt_the_category({ 5 G & K Q W 4); $cat = $cat[0];X c ]
- $cats = get_category_parents($cat, TRUE, $delimiter);
- 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$#", "n / k V + \ 9 \ );$1", $cats);
- $cats = str_replace('<a', $link_beP Z = X + 5 -fore . '<a' ._ ( \ Q $link_attrN X Y i, $cY X D o | } h Gats);
- $cats = str_replace('</a>', '</a>' . $link_after, $cats);
- if ($show_title == 0) $cats = pregK + ] i_replace('/ title="(I l I a [ I 8.*?)"/'A U h 8 ! I X, '', $cats);
- echo $cats;
- if ($show_cur) j 9 w X P 0 B Zrente W b X - == 1) echo $bm } {efore . get_the_title() . $after;
- }
- } 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
- $post_type = g: m W o = G 6et_post_type_object(get_post_type());
- echo $) - 1before . $po= 9 j { 6st_typ$ B \ [ 4 = 9 Be->labels->si. 1 Z ^ z J mngular_name . $after;
- } elseif ( is_attachment() ) &i ? | % 4#123;
- $parent = get_post($parent_id);[ % y ( 0 *
- $cat = get_the_categoryp ? 5 F b v ] Y040;$parent->ID); $cat = $caQ ! *t[0];
- if ($cat) {
- $cats = get_category_pv ! carents($cat, TRUE,- ~ j d 5 5 e $delimiter);
- $cats = str_replace('<a', $link_before . '<a' . $l/ g @ & #ink_attr, $cats);
- $cats = str_replace(E - i 8 $ ( @ n M'</a&3 r [ . & ; Z W 5gt;', '</a>' . $link_after, $cats);
- 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;
- echo $cats;
- }
- printf($link, get7 & X_permalink($parent), $parent->post_title);
- if ($show_current == 1) echo $delimiter . $before . get_the_title(^ w z ) r c) . $after+ z [ u 1 !;
- } elseif ( is_page()U \ D q &&c { { R; !$parent_id ) {
- if ($show_current == 1) echo $before . ge^ s d { g Ct_the_title() . $after;
- } elseif ( is_page() && $parent_id ) {
- if ($parent_id != $frontp5 x 8 9 ) *age_id) {
- $breadcrumbs = array();
- while ($parent_id: ( $ , T ^041; {
- $page = gQ F T l v y J K aet_page($parent_id);
- if ($parent_id != $frontpage_id) {
- $breadcrumbs[] = sprintf($link, get_permalink($page->ID), geO k Z I ~ z n O @t_the_title($page->ID));
- }
- $pW q ] # Rarent_id = $page->post_parer Q - [ }nt;
- }
- $b- o = F 7 F f ~ {readcrumbs = array_reverse($breadcruy g N ( )mbsq r [ H p y l);
- for ($i = 0; $i < count($breadcrumbs); $i++) {
- echo $breadcrumbs[$ia y 9093;;
- if ($i != count($breadcrumbs)-1)+ @ p D; echo $delimiter;
- }
- }
- if ($show_current == 1)^ m f r 6 k; {
- 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;
- echo $before . get_the_W 6 ytitle() . $after;
- }
- } elseif ( is_tag() &r r } # !#041; {
- echo| ^ & 4 $before . sprintf($text['tag'~ o Y d G 0],A b B single_tag_title(- ~ , Z [ & l c'', false)) . $after;
- } elseif ( is_author()! N 9; ) {
- global $author;
- $userdata = get_user~ ? $ l # l C Ydata($author);
- echo $before . sprintf($text['author'V i c m 1 A ~ |], $userdata->display_name) . $after;
- } elseif ( is_404() ) {
- echo $before . $text['404'] . $after;
- } elseC 3 u t = Sif ( has_post_D A e L I \ 7 $ gformat() &&F / ~amp; !is_singular() ) {
- echo get_post_format_stringW k S Y Q V040; get_post_format() );
- }H 8 3 - i .
- if ( get_query_var(I ` A'paged') ) {
- 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 ' (';
- echo __D ^ 0 & W040;'Page') . ' ' . get_A I . , pquery_var('paged');
- 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 ')';
- }
- echo '</div><!-- .P Y $ T X : }breadcrumbs -->';
- F ] q A w1! . _ 8 Z & . ` a25;
- } // end dimox_breadcrumbs()
- ?>
调用方法:
在你需要调用的地方插入
- <?php if (function_exists('dimox_breadcrumbs')) dim; E J R +ox_br9 y = 4 Eeadcrumbs(); ?>
另外需要在样式表中添加 CSS 样式,不然会影响版面,例如:
- .breadcrumbs s j c { A23;
- margin: 0 0 5px;
- padding: 9pxM O J : = ! 20px 7px;
- background-color: #f7f7f7;
- }
可根据自身情况进行修改和h Q ;美化。