解析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 相关文章推荐
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
php读取和保存base64编码的图片内容
Apr 22 PHP
php 猴子摘桃的算法
Jun 20 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 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水印
2007/03/16 PHP
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHP开发需要注意的安全问题
2010/09/01 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
双冒号 ::在PHP中的使用情况
2015/11/05 PHP
php经典趣味算法实例代码
2020/01/21 PHP
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
python静态方法实例
2015/01/14 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
Python dict的常用方法示例代码
2020/06/23 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
运动会致辞稿50字
2014/02/04 职场文书
公共场所标语
2014/06/30 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL