包含多个条件项的条件语句?

时间:2018-03-06 作者:Connie

我已经设置了一个自定义循环,以从我创建的自定义帖子类型资源节中输出帖子。每个单独的资源都在两个不同的分类中进行了分类,一个用于资源所涉及的临床领域,另一个用于资源的类型。临床领域术语作为术语列表输出,这一切都很好。但是,我希望资源类型显示为图标(来自Font Awesome)。如果只检查了一个资源类型术语,我就可以使用它:

    <?php if(has_term(\'webinar\', \'type\')) : ?>
      <i class="fa fa-desktop" aria-hidden="true"></i>
    <?php elseif(has_term(\'report\', \'type\')) : ?>
      <i class="fa fa-file-text-o" aria-hidden="true"></i>
    <?php elseif(has_term(\'video\', \'type\')) : ?>
      <i class="fa fa-youtube-play" aria-hidden="true"></i>
    <?php elseif(has_term(\'past-project\', \'type\')) : ?>
      <i class="fa fa-cogs" aria-hidden="true"></i>
    <?php elseif(has_term(\'meeting-material\', \'type\')) : ?>
      <i class="fa fa-users" aria-hidden="true"></i>
    <?php elseif(has_term(\'info-sheet\', \'type\')) : ?>
      <i class="fa fa-info-circle" aria-hidden="true"></i>
    <?php else : ?>
      <i class="fa fa-link" aria-hidden="true"></i>
    <?php endif; ?>
但很明显,正如我刚才愚蠢地意识到的那样,如果选择了多个术语,这是行不通的。它只检索第一个术语并输出一个图标。相反,如果选中多个术语,我希望它输出多个图标。

所以我的问题是,是否有任何方法可以将其设置为一个if/AND场景,而不必构建一系列自定义has_term(array(\'webinar\', \'report\'), \'type\') -类型语句?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

首先,在icon类和术语名称之间创建某种关联:

$icons = array(
    \'webinar\'          => \'fa-desktop\',
    \'report\'           => \'fa-file-text-o\',
    \'video\'            => \'fa-youtube-play\',
    \'past-project\'     => \'fa-cogs\',
    \'meeting-material\' => \'fa-users\',
    \'info-sheet\'       => \'fa-info-circle\',
);
然后循环浏览分配给帖子的每个术语,并输出相应的图标:

$terms = get_the_terms( get_the_ID(), \'type\' );

if ( $terms && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        $class = isset( $icons[$term->slug] ) ? $icons[$term->slug] : \'fa-link\';

        echo \'<i class="fa \' . $class . \'" aria-hidden="true"></i>\';
    }
}

结束

相关推荐

Get random terms

有可能得到随机项吗?要获取随机帖子,您可以使用WP_Query 和设置\'orderby\' => \'rand\'. 但有没有办法用条款做到这一点?我试过这个:$terms = get_terms( array( \'taxonomy\' => \'webshops\', \'hide_empty\' => false, \'orderby\' => \'rand\', \'number\' => 6