如何只显示3个主要类别,用逗号分隔,因为它们在帖子中被标记?

时间:2019-02-27 作者:Omniatom

我想在我的帖子中只显示3个类别(例如:马、狗、鸟),名称和逗号分隔,因为其中一个、两个或所有树都在帖子中标记。

    <span><?php
if ( \'in_category(\'horses\') ) {
    echo "horses";
} ?></span><span><?php
if ( in_category(\'dogs\') ) {
    echo "dogs";
} ?></span><span><?php
if ( in_category(\'birds\') ) {
    echo "birds";
} 
?></span>

4 个回复
最合适的回答,由SO网友:Fabrizio Mele 整理而成

使用单个<span> 对于所有类别,添加一些逻辑:

<span><?php
$categories = [\'horses\',\'dogs\',\'birds\'];
$string = "";

foreach ($categories as $category){ //iterate over the categories to check
    if(has_category($category))
        $string .= $category.", "; //if in_category add to the output
}

$string = trim($string); //remove extra space from end
$string = rtrim($string, \',\'); //remove extra comma from end
echo $string; //result example: <span>horses, dogs</span>
?></span>

SO网友:Krzysiek Dróżdż

我不确定我是否理解正确,因为这听起来不像是很常见的问题,但是。。。

如果您只想检查给定的三个类别是否存在,并用逗号分隔输出它们,那么这就是您可以使用的代码(基于您的代码,但我已经解决了空跨度问题):

<?php $cats_printed = 0; ?>
<?php if ( in_category(\'horses\') ) : $cats_printed++; ?><span>horses</span><?php endif; ?>
<?php if ( in_category(\'dogs\') ) : if ( $cats_printed++ ) echo \', \'; ?><span>dogs</span><?php endif; ?>
<?php if ( in_category(\'birds\') ) : if ( $cats_printed++ ) echo \', \'; ?><span>birds</span><?php endif; ?>

SO网友:shea

下面是Fabrizo代码的简化版本:

<span><?php
    $categories = [ \'horses\', \'dogs\', \'birds\' ];
    echo implode( \', \', array_filter( $categories, \'has_category\' ) );
?></span>

SO网友:Qaisar Feroz

您可以使用get_the_terms( int|WP_Post $post, string $taxonomy ) . 参见Codex详细信息here.

// put IDs of your selected three categories e.g. 15, 18, 20  here in this array
$my_cats  = array(15, 18, 20);

$my_terms = get_the_terms( get_the_id(), \'category\' );

if ( ! empty( $my_terms ) ) {
    if ( ! is_wp_error( $my_terms ) ) {

        foreach( $my_terms as $term ) {

           if(in_array($term->term_id, $my_cats){
              // Display them as you want
              echo \'<span>\' .  esc_html( $term->name ) . \'</span>\' ; 

           }
        }
    }
}

相关推荐

Dropdown menu for categories

当我使用下面的代码时<?php wp_nav_menu( array(\'menu\' => \'categories\' )); ?> 我可以创建一个新的菜单来列出我创建的wordpress中的所有类别。我用它在页面中间列出所有类别。我现在的问题是:有没有一种简单的方法可以为存在的每个子类别创建下拉菜单?那么,当我点击一个特定的类别时,它的子类别会显示出来吗?