WordPress免插件实现面包屑导航的示例代码


Posted in PHP onAugust 20, 2020

你如果在开发自己的wordpress主题,想加入面包屑导航,而又不想使用插件的话,下面的代码对你有帮助,这里提供了网上较为流行的两种代码,一是功能非常完善的,一是一个较为简洁的代码。

前面介绍了一种方法,你也可以尝试一下,在文末给大家详细介绍了自定义函数实现wordpress面包屑导航的代码,可以点击查看下。

功能非常完善代码

1、将下面的代码添加到主题的 functions.php

/**
 * WordPress 添加面包屑导航 
 * http://www.511yj.com/wordpress-add-breadcrumb.html
 */
function cmp_breadcrumbs() {
 $delimiter = '»'; // 分隔符
 $before = '<span class="current">'; // 在当前链接前插入
 $after = '</span>'; // 在当前链接后插入
 if ( !is_home() && !is_front_page() || is_paged() ) {
 echo '<div itemscope itemtype="http://schema.org/WebPage" id="crumbs">'.__( '当前位置:' , 'cmp' );
 global $post;
 $homeLink = home_url();
 echo ' <a itemprop="breadcrumb" href="' . $homeLink . '" rel="external nofollow" >' . __( '无作为' , 'cmp' ) . '</a> ' . $delimiter . ' ';
 if ( is_category() ) { // 分类 存档
 global $wp_query;
 $cat_obj = $wp_query->get_queried_object();
 $thisCat = $cat_obj->term_id;
 $thisCat = get_category($thisCat);
 $parentCat = get_category($thisCat->parent);
 if ($thisCat->parent != 0){
 $cat_code = get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' ');
 echo $cat_code = str_replace ('<a','<a itemprop="breadcrumb"', $cat_code );
 }
 echo $before . '' . single_cat_title('', false) . '' . $after;
 } elseif ( is_day() ) { // 天 存档
 echo '<a itemprop="breadcrumb" href="' . get_year_link(get_the_time('Y')) . '" rel="external nofollow" rel="external nofollow" >' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
 echo '<a itemprop="breadcrumb" href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '" rel="external nofollow" >' . get_the_time('F') . '</a> ' . $delimiter . ' ';
 echo $before . get_the_time('d') . $after;
 } elseif ( is_month() ) { // 月 存档
 echo '<a itemprop="breadcrumb" href="' . get_year_link(get_the_time('Y')) . '" rel="external nofollow" rel="external nofollow" >' . get_the_time('Y') . '</a> ' . $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_post_type() != 'post' ) { // 自定义文章类型
 $post_type = get_post_type_object(get_post_type());
 $slug = $post_type->rewrite;
 echo '<a itemprop="breadcrumb" href="' . $homeLink . '/' . $slug['slug'] . '/" rel="external nofollow" >' . $post_type->labels->singular_name . '</a> ' . $delimiter . ' ';
 echo $before . get_the_title() . $after;
 } else { // 文章 post
 $cat = get_the_category(); $cat = $cat[0];
 $cat_code = get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
 echo $cat_code = str_replace ('<a','<a itemprop="breadcrumb"', $cat_code );
 echo $before . get_the_title() . $after;
 }
 } elseif ( !is_single() && !is_page() && get_post_type() != 'post' ) {
 $post_type = get_post_type_object(get_post_type());
 echo $before . $post_type->labels->singular_name . $after;
 } elseif ( is_attachment() ) { // 附件
 $parent = get_post($post->post_parent);
 $cat = get_the_category($parent->ID); $cat = $cat[0];
 echo '<a itemprop="breadcrumb" href="' . get_permalink($parent) . '" rel="external nofollow" >' . $parent->post_title . '</a> ' . $delimiter . ' ';
 echo $before . get_the_title() . $after;
 } elseif ( is_page() && !$post->post_parent ) { // 页面
 echo $before . get_the_title() . $after;
 } elseif ( is_page() && $post->post_parent ) { // 父级页面
 $parent_id = $post->post_parent;
 $breadcrumbs = array();
 while ($parent_id) {
 $page = get_page($parent_id);
 $breadcrumbs[] = '<a itemprop="breadcrumb" href="' . get_permalink($page->ID) . '" rel="external nofollow" >' . get_the_title($page->ID) . '</a>';
 $parent_id = $page->post_parent;
 }
 $breadcrumbs = array_reverse($breadcrumbs);
 foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter . ' ';
 echo $before . get_the_title() . $after;
 } elseif ( is_search() ) { // 搜索结果
 echo $before ;
 printf( __( 'Search Results for: %s', 'cmp' ), get_search_query() );
 echo $after;
 } elseif ( is_tag() ) { //标签 存档
 echo $before ;
 printf( __( 'Tag Archives: %s', 'cmp' ), single_tag_title( '', false ) );
 echo $after;
 } elseif ( is_author() ) { // 作者存档
 global $author;
 $userdata = get_userdata($author);
 echo $before ;
 printf( __( 'Author Archives: %s', 'cmp' ), $userdata->display_name );
 echo $after;
 } elseif ( is_404() ) { // 404 页面
 echo $before;
 _e( 'Not Found', 'cmp' );
 echo $after;
 }
 if ( get_query_var('paged') ) { // 分页
 if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() )
 echo sprintf( __( '( Page %s )', 'cmp' ), get_query_var('paged') );
 }
 echo '</div>';
 }
}

前台调用

<?php if(function_exists('cmp_breadcrumbs')) cmp_breadcrumbs();?>

下面看下自定义函数实现wordpress面包屑导航的代码

面包屑导航 一是方便读者所在的位置,更重要的是对SEO非常友好,利于蜘蛛知道你网站的目录结构,所以给我们的wordpress主题添加面包屑导航是必须的。

1、在functioss.php添加以下代码

/**
 * WordPress 添加面包屑导航 
 * 面包屑导航,直接输出(echo)
 * Breadcrumb Trail
 * @param string $sep 导航对象分隔符,默认为' > '
 */
function bread_nav($sep = ' > '){
  echo '<div class="col-md-12 "><span class="glyphicon glyphicon-home text-primary"></span> 您当前的位置: <a href="'. home_url() .'" title="首页">首页</a>';
  if ( is_category() ){  //如果是栏目页面
    global $cat;    
    echo $sep . get_category_parents($cat, true, $sep) . '文章列表';
  }elseif ( is_page() ){  //如果是自定义页面
    echo $sep . get_the_title();
  }elseif ( is_single() ){  //如果是文章页面
    $categories = get_the_category();
    $cat = $categories[0];
    echo $sep . get_category_parents($cat->term_id, true, $sep) .'正文内容 '. get_the_title(); 
  }
  echo '</div>';
}

2、前台调用

<?php bread_nav();?>

总结

到此这篇关于WordPress免插件实现面包屑导航的示例代码的文章就介绍到这了,更多相关WordPress面包屑导航内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
php中设置多级目录session的问题
Aug 08 PHP
如何使用php输出时间格式
Aug 31 PHP
php分页代码学习示例分享
Feb 20 PHP
php中操作memcached缓存进行增删改查数据的实现代码
Aug 15 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
PHP使用MPDF类生成PDF的方法
Dec 08 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
CodeIgniter记录错误日志的方法全面总结
May 17 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
Thinkphp自定义生成缩略图尺寸的方法
Aug 05 PHP
php use和include区别总结
Oct 13 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 #PHP
Laravel相关的一些故障解决
Aug 19 #PHP
聊聊 PHP 8 新特性 Attributes
Aug 19 #PHP
php提高脚本性能的4个技巧
Aug 18 #PHP
php判断IP地址是否在多个IP段内
Aug 18 #PHP
PHP 8新特性简介
Aug 18 #PHP
PHP大文件及断点续传下载实现代码
Aug 18 #PHP
You might like
Zerg建筑一览
2020/03/14 星际争霸
PHP循环获取GET和POST值的代码
2008/04/09 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
深入探究node之Transform
2017/07/20 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
Python上下文管理器和with块详解
2017/09/09 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
python实现简单猜单词游戏
2020/12/24 Python
python实现按日期归档文件
2021/01/30 Python
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
素质教育标语
2014/06/27 职场文书
园林技术专业求职信
2014/07/28 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
财产分割协议书范本
2014/11/03 职场文书
毕业典礼主持词
2015/06/29 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
JavaScript 原型与原型链详情
2021/11/02 Javascript