我应该在哪里使用post_class()?

时间:2015-08-30 作者:Alex

我正在努力学习WP主题开发。正如我所了解的,使用“post\\u class()”很重要,因为插件可能需要使用它。但我不明白的是我应该在哪里使用它?

我是否应该将其用于主循环的post。或者我应该将其用于我的自定义post类型循环。或者两者都有?

2 个回复
最合适的回答,由SO网友:Will 整理而成

实际上,只有当主题的CSS或JS依赖于它输出的内容时,才需要使用它。它本质上是将相关类名填充到HTML标记中,您可以根据当前帖子/类别/诸如此类的内容将其放在HTML标记上。因此,在单个帖子模板上:

<article <?php post_class(); ?>>
可能输出:

<article class="post post-123 category-3 category-cats status-publish hentry">
然后,您可以使用这些类来使用CSS(或JavaScript的挂钩)设置样式。

将其与自定义帖子类型一起使用时,还将输出帖子类型:

<article class="mycpt type-mycpt post-345 category-3 category-cats status-publish hentry">
它实际上总是输出post类型。在第一个示例中,post 是post类型。

请注意,您还可以手动传入自定义类名;由于函数实际上输出class属性本身(而仅输出类名列表),因此这是将WP生成的类和自定义类都获取到元素上的唯一方法。因此:

<article <?php post_class( \'my-custom-class\' ); ?>>
将添加my-custom-class 到WordPress输出的类字符串。

法典文章:https://codex.wordpress.org/Function_Reference/post_class

EDIT: 从注释中可以看出,“好的,那么应该在单个贴子页面上使用post\\u class()

您可以在任何模板上使用它。实际上,它甚至可能更常用于归档类型的页面。假设您有一个包含三类帖子的博客:教程、社论和评论。在你的网站主页上,你可能会有一个网格,其中所有这些帖子都列在一个大列表中。使用CSS和post_class() 您可以为每个条目的类型设置不同的样式。比如,在任何带有class="category-tutorial", 任何带有class="category-editorial" 等等

在…上http://ecotrust.org/search/farms 我使用搜索结果页面上的post类让用户知道每个结果的内容类型。我们从来没有为每个图标设计过图标,所以它只是简单的插入CSS内容的文本。

// a mixin that puts the little words in the bottom right corner
.type-identify(@content-type:" ") {
    &:before {
        content: @content-type;
        bottom: 20px;
        color: #cccccc;
        clear: none;
        display: block;
        position: absolute;
        right: 0;
        text-align: right;
        width: 160px;
        .small-info();
    }
    &:hover:before {
        color: #aaaaaa;
    }
}

// then call it based on the post_class() output for different post types, 
// including custom post types
.type-post {
    .type-identify("Blog post");
}
.type-page {
    .type-identify("Page");
}
.type-press_release {
    .type-identify("Press release");
}
.type-portfolio_item {
    .type-identify("Portfolio");
}
.type-project {
    .type-identify("Project");
}

SO网友:Ruturaj

post\\u类将向HTML标记添加一些默认的Wordpress CSS类;喜欢<div <?php post_class(); ?>

如果您想添加自己主题的自定义类,可以在post\\u类中添加这些类,如下所示。。。<div <?php post_class(\'blog-entry\'); ?>.

您可以在循环中以及在单页/页面主题文件中使用post\\u类。如果在循环中使用,它将允许您根据内容类型(标准、视频、聊天等,如果您的主题支持的话)为每个帖子提供不同的look-n-feel。

我只想提一下。。。看见body_class() 并将其用于body 标签这将为您在为特定页面或页面模板内容编写CSS时提供更大的灵活性。

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>