解析WordPress中的post_class与get_post_class函数


Posted in PHP onJanuary 04, 2016

post_class()
post_class 是 WordPress 内置的一个用于显示文章 class 名称的函数,该函数通常会为每一篇文章生成独一无二的 clss 值,如果你需要制作你自己的主题,而且还需要一点个性的话,那你最好驻足一下,使用该函数并配合灵活的 css 代码,我们可以制作出个性化十足的 WordPress 博客。

post_class 函数描述
该函数通常会为每一篇文章生成独一无二的 clss 值,可以很方便使用于文章所在的节点中。

函数使用
向其他的诸如 header_image、wp_title这样的 WordPress 标签函数一样,不带 get 的函数通常是会直接显示出来而不返回任何值。

<post id="post-<?php the_ID(); ?>" <?php post_class(); ?> > <?php the_content ;?> </post>

是的,也许你已经注意到了,使用 post_class 函数时我们甚至不需要这样去写 clss=“post_class()”;。

实例结果
不卖关子,结果如下

<post id="post-888" class="post-888 post type-post status-publish format-standard hentry category-2 tag-wordpress" > 文章内容 </post>

以使用为主的函数讲完了,
下面照旧给出函数源代码:
想要了解更多关于该函数,以及get_post_class函数请关注后期文章。

/**
 * Display the classes for the post div.
 *
 * @since 2.7.0
 *
 * @param string|array $class One or more classes to add to the class list.
 * @param int $post_id An optional post ID.
 */
function post_class( $class = '', $post_id = null ) {
 // Separates classes with a single space, collates classes for post DIV
 echo 'class="' . join( ' ', get_post_class( $class, $post_id ) ) . '"';
}

get_post_class 详解
get_post_class 是 post_class 函数的基本实现,在 WordPress 中其他一些带 get 的函数一样,该函数将会有一个返回值,而该返回值将是一个包含当前文章基本信息的数组,get_post_class 函数主要用来给每篇文章生成独一无为的 class 值而被封装出来的。

如果你是一个要求不高的人的话,那么 post_class 这个函数其实已经足够你折腾了。如果你是一个有着精神洁癖的人,不想自己的 WordPress 网站有太多无用代码的话,那你可以继续往下看。

get_post_class函数详解
该函数主要用来生成一个当前文章相关信息的数组,该数组所含信息我们往往用来作为文章层中的 class 值。
就像我上面提到的 post_class 函数,就是利用了本函数生成的 class 值。
并且该函数支持插入你自己的 class 值,一合并到返回数组中。
以上是我本人的理解,当然你也可以看一下官方的手册。

比较费解的手册内容如下:
WordPress Themes have a template tag for the post HMTL tag which will help theme authors to style more effectively with CSS. The Template Tag is called get_post_class. This function returns different post container classes which can be added, typically, in the index.php, single.php, and other template files featuring post content, typically in the HTML

tag.
函数用法

<?php get_post_class($class, $post_id); ?>

如果在循环中,并且不需要插入自定义class值的话,该函数可不接受任何参数。

函数参数
$class:自定义 class 值,可以使字符串也可以死数组。

$post_id:文章ID

使用实例

$MyClass = get_post_class(); 
 var_dump($MyClass);

输出结果:

array(9) {
 [0]=>
 string(8) "post-249"
 [1]=>
 string(4) "post"
 [2]=>
 string(9) "type-post"
 [3]=>
 string(14) "status-publish"
 [4]=>
 string(15) "format-standard"
 [5]=>
 string(6) "hentry"
 [6]=>
 string(18) "category-catcatcat"
 [7]=>
 string(8) "tag-tag1"
 [8]=>
 string(8) "tag-tag2"
}

进阶实例

$MyClass = get_post_class('index-post',249);
//或 
$MyClass = get_post_class(array( 'index-post'),249);
 var_dump($MyClass);

输出结果:

array(10) {
 [0]=>
 string(8) "post-249"
 [1]=>
 string(4) "post"
 [2]=>
 string(9) "type-post"
 [3]=>
 string(14) "status-publish"
 [4]=>
 string(15) "format-standard"
 [5]=>
 string(6) "hentry"
 [6]=>
 string(18) "category-catcatcat"
 [7]=>
 string(8) "tag-tag1"
 [8]=>
 string(8) "tag-tag2"
 [9]=>
 string(10) "index-post"
}

总结
根据函数的源代码,我们可以看出,本函数 class 值罗列的顺序为:

  • 文章id
  • 文章类型(页面、文章)
  • 文章类型(页面、文章)与上一条相同,但结果中多了‘type-'字样
  • 发布状态
  • 文章格式
  • 是否需要密码
  • 文章所述分类(会逐个罗列所述分类)
  • 文章所述标签(会逐个罗列标签)
PHP 相关文章推荐
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
php判断是否为json格式的方法
Mar 04 PHP
php获取表单中多个同名input元素的值
Mar 20 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
理解php依赖注入和控制反转
May 11 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 #PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 #PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 #PHP
大家须知简单的php性能优化注意点
Jan 04 #PHP
weiphp微信公众平台授权设置
Jan 04 #PHP
PHP在线书签系统分享
Jan 04 #PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 #PHP
You might like
PHP项目开发中最常用的自定义函数整理
2010/12/02 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
php显示页码分页类的封装
2017/06/08 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
python 异常处理总结
2016/10/18 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
python实现报表自动化详解
2017/11/16 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
python批量修改文件编码格式的方法
2018/05/31 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
最新的互联网创业计划书
2014/01/10 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书