根据类别设置颜色

时间:2013-11-12 作者:MultiformeIngegno

我有这个功能,输出1类和2类的最后6个职位。

<ul>
<?php query_posts(\'cat=1,2&showposts=6\'); ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><strong><?php the_title(); ?></strong></a><br />
    <em><?php echo substr(get_the_excerpt(), 0,110); ?> ...</em>
    </li>
    <br />
<?php endwhile; ?>
</ul>
我想做的是,如果这篇文章来自类别1,那么它的链接是红色的,如果它来自类别2,那么它的链接是绿色的。你能帮帮我吗?

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

将您错误使用的query_posts(), 最简单的解决方案是向post_class(), 输出特定于post的类,包括.category-{ID}.category-{slug}:

<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    <li <?php post_class(); ?>><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><strong><?php the_title(); ?></strong></a><br />
    <em><?php echo substr(get_the_excerpt(), 0,110); ?> ...</em>
    </li>
    <br />
<?php endwhile; ?>
然后,您可以使用CSS来li.category-{ID}.

SO网友:Howdy_McGee

这并不是最具活力的解决方案,但您可以这样做:

<ul>
<?php query_posts(\'cat=1,2&showposts=6\'); ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

  <?php if($post->post_category == 1) : ?>
    <li style="color:red">
  <?php else : ?>
    <li style="color:green">
  <?php endif; ?>

        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><strong><?php the_title(); ?></strong></a><br />
        <em><?php echo substr(get_the_excerpt(), 0,110); ?> ...</em>
    </li>
    <br />
<?php endwhile; ?>
</ul>
或者,您可以为每个类别动态添加一个类,这里我是基于slug 但最好的解决方案可能是基于term_id Codex

<ul>
<?php query_posts(\'cat=1,2&showposts=6\'); ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    <?php $cat = get_the_category(); ?>
    <li class="catColor-<?php echo $cat->slug; ?>">
        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><strong><?php the_title(); ?></strong></a><br />
        <em><?php echo substr(get_the_excerpt(), 0,110); ?> ...</em>
    </li>
    <br />
<?php endwhile; ?>
</ul>
如果您对wordpress/php足够熟悉,您可以尝试在类别中添加自定义字段以在其中添加颜色。Here\'s How I did That

结束

相关推荐

Ordering Subcategories

我使用以下代码显示子类别中的数据。子类别为“英国”、“仅英格兰”、“仅北爱尔兰”、“仅苏格兰”、“仅威尔士”。按日期或asc/desc排序,英国子类别位于中间位置,威尔士或英格兰位于顶部。我需要英国子类别位于顶部。它拥有最多的帖子-那么可以在查询中使用orderby来解决这个问题吗?或者你认为我只需要为UK子类别创建自己的循环吗?$parentCatID = get_cat_ID(\'Grants and Incentives\'); $childCats = get_categories( \'