在一个循环中,如何根据类别名称更改css类?

时间:2018-05-07 作者:Felipe Fernandes

这是我在这里的第一篇帖子。作为一名WP开发人员,我正在努力应对一种新情况。

我有一个循环,列出了一些帖子。这些帖子可以按不同类别发布。我需要根据显示的类别设置显示类别名称的样式。例如:视频将以黑色背景和白色文本颜色编写。音频将以绿色背景和白色文本颜色书写。

我需要获得类别的名称并应用CSS类。以下是我当前的代码片段:

<div class="row">
<?php 
    $args = array(\'post_type\'=>\'post\', \'showposts\'=>8, \'category_name\'=>\'noticias\'); 
    $noticias = get_posts($args); 
    if($noticias) : foreach($noticias as $post) : setup_postdata($post);            
?>

<div class="col-xl-3 col-lg-4 col-md-4 col-sm-6 n-container-sm">
    <h3 class="titulo_post_pequeno">
        <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
    </h3> 

    <p><span class="categoria_post cat-geral"><?php foreach((get_the_category()) as $category) { echo $category->cat_name;}?></span> / <span class="date-post-peq">EM <?php the_time(\'d/m/y\'); ?></span></p>
            <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                <?php if ( has_post_thumbnail() ) { 
                    the_post_thumbnail(\'img-noticia\', [\'class\'=>\'img-fluid img-destaque\'] ); 
                }  else { 
                    echo \'<img class="img-fluid img-destaque" src="\'.get_bloginfo("template_url").\'/img/none_noticia.jpg">\';
                } 
                ?>
            </a>
            <a href="<?php the_permalink(); ?>" class="btn btn-primary btn-read">Leia +</a>
        </div>
    <?php
        endforeach;
        endif;
    ?> 
    </div>

1 个回复
SO网友:cjbj

你需要的是post_class, 一个将添加多个链接到帖子的类的函数。您可以在循环的主div中使用它,还可以添加自己的类。在您的情况下:

<div ?><?php post_class ("col-xl-3 col-lg-4 col-md-4 col-sm-6 n-container-sm") ?> >
这将类别名称作为类添加到div, 然后可以在css中使用。

相关:也调查body_class.

EDIT: 添加内容

如果您有一个复杂的类别层次结构,您可能希望将类基于父类别,因为您的用户将添加新类别(例如“hiphop”和“tango”到“videos”类别)。在这种情况下,您必须添加一些代码来检索父类别,并将其重写为以下特定格式:

$all_cats = get_the_category ($post->ID);
$all_parents = \'\';
foreach ($all_cats as $cat) {
    $all_parents .= get_category_parents ($cat, false, \'-parent-cat \');
    }
$all_parents = strtolower ($all_parents);
现在您可以添加$all_parents 到您的post_class:

<div ?><?php post_class ($all_parents . " col-xl-3 col-lg-4 col-md-4 col-sm-6 n-container-sm") ?> >

结束

相关推荐

custom css for admin only

我需要为管理自定义CSS。所以,若用户并没有登录,或者除了管理员之外,其他任何人都有一个CSS,对于管理员来说,只有不同的CSS。我在函数中尝试了此代码。php:function wpa66834_role_admin_body_class( $classes ) { global $current_user; foreach( $current_user->roles as $role ) $classes .= \' role-\' . $