解析WordPress中的post_class与get_post_class函数
<p><strong>post_class()</strong><br>
post_class 是 WordPress 内置的一个用于显示文章 class 名称的函数,该函数通常会为每一篇文章生成独一无二的 clss 值,如果你需要制作你自己的主题,而且还需要一点个性的话,那你最好驻足一下,使用该函数并配合灵活的 css 代码,我们可以制作出个性化十足的 WordPress 博客。</p>
<p>
post_class 函数描述<br>
该函数通常会为每一篇文章生成独一无二的 clss 值,可以很方便使用于文章所在的节点中。</p>
<p>
函数使用<br>
向其他的诸如 header_image、wp_title这样的 WordPress 标签函数一样,不带 get 的函数通常是会直接显示出来而不返回任何值。</p>
<div>
<div>
<div id="highlighter_703259">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code><post id=</code><code>"post-<?php the_ID(); ?>"</code> <code><?php post_class(); ?> > <?php the_content ;?> </post></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
是的,也许你已经注意到了,使用 post_class 函数时我们甚至不需要这样去写 clss=“post_class()”;。</p>
<p>
实例结果<br>
不卖关子,结果如下</p>
<div>
<div>
<div id="highlighter_268091">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code><post id=</code><code>"post-888"</code> <code>class</code><code>=</code><code>"post-888 post type-post status-publish format-standard hentry category-2 tag-wordpress"</code> <code>> 文章内容 </post></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
以使用为主的函数讲完了,<br>
下面照旧给出函数源代码:<br>
想要了解更多关于该函数,以及get_post_class函数请关注后期文章。</p>
<div>
<div>
<div id="highlighter_514702">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
</td>
<td>
<div>
<div>
<code>/**</code>
</div>
<div>
<code> </code><code>* Display the classes for the post div.</code>
</div>
<div>
<code> </code><code>*</code>
</div>
<div>
<code> </code><code>* @since 2.7.0</code>
</div>
<div>
<code> </code><code>*</code>
</div>
<div>
<code> </code><code>* @param string|array $class One or more classes to add to the class list.</code>
</div>
<div>
<code> </code><code>* @param int $post_id An optional post ID.</code>
</div>
<div>
<code> </code><code>*/</code>
</div>
<div>
<code>function</code> <code>post_class( </code><code>$class</code> <code>= </code><code>''</code><code>, </code><code>$post_id</code> <code>= null ) {</code>
</div>
<div>
<code> </code><code>// Separates classes with a single space, collates classes for post DIV</code>
</div>
<div>
<code> </code><code>echo</code> <code>'php plain">. join( </code><code>' '</code><code>, get_post_class( </code><code>$class</code><code>, </code><code>$post_id</code> <code>) ) . </code><code>'"'</code><code>;</code>
</div>
<div>
<code>}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>get_post_class 详解</strong><br>
get_post_class 是 post_class 函数的基本实现,在 WordPress 中其他一些带 get 的函数一样,该函数将会有一个返回值,而该返回值将是一个包含当前文章基本信息的数组,get_post_class 函数主要用来给每篇文章生成独一无为的 class 值而被封装出来的。</p>
<p>
如果你是一个要求不高的人的话,那么 post_class 这个函数其实已经足够你折腾了。如果你是一个有着精神洁癖的人,不想自己的 WordPress 网站有太多无用代码的话,那你可以继续往下看。</p>
<p>
get_post_class函数详解<br>
该函数主要用来生成一个当前文章相关信息的数组,该数组所含信息我们往往用来作为文章层中的 class 值。<br>
就像我上面提到的 post_class 函数,就是利用了本函数生成的 class 值。<br>
并且该函数支持插入你自己的 class 值,一合并到返回数组中。<br>
以上是我本人的理解,当然你也可以看一下官方的手册。</p>
<p>
比较费解的手册内容如下:<br>
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</p>
<p>
tag.<br>
函数用法</p>
<div>
<div>
<div id="highlighter_813917">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code><?php get_post_class(</code><code>$class</code><code>, </code><code>$post_id</code><code>); ?></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
如果在循环中,并且不需要插入自定义class值的话,该函数可不接受任何参数。</p>
<p>
函数参数<br>
$class:自定义 class 值,可以使字符串也可以死数组。</p>
<p>
$post_id:文章ID</p>
<p>
使用实例</p>
<div>
<div>
<div id="highlighter_580318">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
</td>
<td>
<div>
<div>
<code>$MyClass</code> <code>= get_post_class(); </code>
</div>
<div>
<code> </code><code>var_dump(</code><code>$MyClass</code><code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
输出结果:</p>
<div>
<div>
<div id="highlighter_457009">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
<div>
18</div>
<div>
19</div>
<div>
20</div>
</td>
<td>
<div>
<div>
<code>array(9) {</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(8) "post-249"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(4) "post"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(9) "type-post"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(14) "status-publish"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(15) "format-standard"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(6) "hentry"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(18) "category-catcatcat"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(8) "tag-tag1"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(8) "tag-tag2"</code>
</div>
<div>
<code>}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
进阶实例</p>
<div>
<div>
<div id="highlighter_343313">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
</td>
<td>
<div>
<div>
<code>$MyClass</code> <code>= get_post_class(</code><code>'index-post'</code><code>,249);</code>
</div>
<div>
<code>//或 </code>
</div>
<div>
<code>$MyClass</code> <code>= get_post_class(</code><code>array</code><code>( </code><code>'index-post'</code><code>),249);</code>
</div>
<div>
<code> </code><code>var_dump(</code><code>$MyClass</code><code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
输出结果:</p>
<div>
<div>
<div id="highlighter_18594">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
<div>
18</div>
<div>
19</div>
<div>
20</div>
<div>
21</div>
<div>
22</div>
</td>
<td>
<div>
<div>
<code>array(10) {</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(8) "post-249"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(4) "post"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(9) "type-post"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(14) "status-publish"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(15) "format-standard"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(6) "hentry"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(18) "category-catcatcat"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(8) "tag-tag1"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(8) "tag-tag2"</code>
</div>
<div>
<code> </code><code>=></code>
</div>
<div>
<code> </code><code>string(10) "index-post"</code>
</div>
<div>
<code>}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
总结<br>
根据函数的源代码,我们可以看出,本函数 class 值罗列的顺序为:</p>
<ul>
<li>
文章id</li>
<li>
文章类型(页面、文章)</li>
<li>
文章类型(页面、文章)与上一条相同,但结果中多了‘type-'字样</li>
<li>
发布状态</li>
<li>
文章格式</li>
<li>
是否需要密码</li>
<li>
文章所述分类(会逐个罗列所述分类)</li>
<li>
文章所述标签(会逐个罗列标签)</li>
</ul>
頁:
[1]