How to get current category

时间:2016-10-25 作者:Mark

你好,我有点麻烦。我不知道我在做什么有问题。我想将类添加到当前类别。因此,我的php如下所示:

    <menu id="nav">
        <ul>   
            <?php $cat_id = get_cat_ID();
            foreach( $categories as $c ):?>         
            <li class="<?php if(($c->term_id) == $cat_id){echo \'active\' ;} ?>">
            <a href="<?php echo get_category_link( $c->term_id ); ?>" title="<?php echo $c->cat_name ;?>">
            <?php echo $c->cat_name ;?>
            </a>                
            </li>
        <?php endforeach;   ?>  
        </ul>
</menu>
我只想将活动类添加到当前类别。但这是行不通的。

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

您可以使用get_queried_object(), 将返回类别对象。

请参阅文档:

https://codex.wordpress.org/Function_Reference/get_queried_object

SO网友:Matthew

将你的$c术语(在循环中)放入print_r/var_dump 查看您尝试比较的属性值是否与您要查找的实际值相同(请参见下文)。

我还在if语句中添加了一个三元运算符,这是更好的做法。(有关三元运算符的更多信息,请阅读下文)。

<menu id="nav">
    <ul>   
    <?php $cat_id = get_cat_ID();
    foreach( $categories as $c ):?>
        <?php print_r($c); ?>         
        <li class="<?php echo $c->term_id == $cat_id ? \'active\' : null ;} ?>">
        <a href="<?php echo get_category_link( $c->term_id ); ?>" title="<?php echo $c->cat_name ;?>">
        <?php echo $c->cat_name ;?>
        </a>                
        </li>
    <?php endforeach;   ?>  
    </ul>
</menu>

Ternary Operator

在计算机编程中,?:是三元运算符,是几种编程语言中基本条件表达式语法的一部分。它通常被称为条件运算符、内联if(iif)或三元if。

if(1==1) echo \'true\'; 
else echo \'false\';
可以在如下三元运算符中完成:

echo 1==1 ? \'true\' : \'false\';
另一个例子

if(1==1) $boolean = true;
else $boolean = false;
可以在如下三元运算符中完成:

$boolean = 1==1 ? true : false;
由于PHP 5.3,可以省略运算符的“中间部分”。速记三元运算符只能用于匹配false

if(1!=2) echo \'false\';
三元运算符:

echo 1!=2 ?: \'false\';
阅读更多:http://php.net/manual/en/language.operators.comparison.php