解析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中的MVC模式运用技巧
May 03 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
thinkphp3查询mssql数据库乱码解决方法分享
Feb 11 PHP
php使用MySQL保存session会话的方法
Jun 26 PHP
PHP微信开发用Cache 解决数据缓存
Jul 11 PHP
php实现解析xml并生成sql语句的方法
Feb 03 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 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
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
js常见遍历操作小结
2019/06/06 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
python线程锁(thread)学习示例
2013/12/04 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
更新修改后的Python模块方法
2019/03/03 Python
如何理解python面向对象编程
2020/06/01 Python
Keras 使用 Lambda层详解
2020/06/10 Python
班风口号
2014/06/18 职场文书
沈阳故宫导游词
2015/01/31 职场文书
2015年化验员工作总结
2015/04/10 职场文书
员工表扬信怎么写
2015/05/05 职场文书