解析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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
PHP个人网站架设连环讲(一)
Oct 09 PHP
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
迅速确定php多维数组的深度的方法
Jan 07 PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 PHP
php使用gzip压缩传输js和css文件的方法
Jul 29 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
May 18 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 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
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
php探针不显示内存解决方法
2019/09/17 PHP
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
几行js代码实现自适应
2017/02/24 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
python openCV自制绘画板
2020/10/27 Python
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
班组长竞聘书
2014/03/31 职场文书
学校端午节活动方案
2014/08/23 职场文书
2014年纪检工作总结
2014/11/12 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
小学教师2014年度工作总结
2014/12/03 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
小学英语听课心得体会
2016/01/14 职场文书
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle