我为我的帖子设置了一个自定义分类法,名为$type
. 如果$type == \'roast\'
.
<?php $number = 1; ?>
<!-- the loop -->
<?php while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post(); ?>
<?php $type = get_the_term_list( $post->ID, \'type\', \'\' );
echo $type;
if ($type == "roast") { ?>
<li><?php echo $number . \'. \'; $number++;?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<span><?php echo get_the_term_list( $post->ID, \'rating\', \'\' ); ?></span>
<span><?php echo get_the_term_list( $post->ID, \'price\', \'\' ); ?></span>
</li>
<?php }
if (in_array(\'roast\', $type)) { echo "hello"; }
?>
我先回显
$type
, 作为一种测试,这确实反映了“烘烤”。
但是我的if语句,以及后来尝试使用in_array
, 不要像预期的那样回声。
谁能告诉我我做错了什么?
SO网友:Jacob Peattie
get_the_term_list()
返回给定帖子上分类术语列表的HTML字符串。如果在可选参数中不提供值,则如下所示:
<a href="http://example.com/type/roast/" rel="tag">Roast</a> <a href="http://example.com/type/type2/" rel="tag">Type 2</a>
所以
$type == \'roast\'
不会为true,因为该值与
\'roast\'
.
即使它返回如下数组array( \'roast\' )
那不是真的,因为\'roast\'
不等于array( \'roast\' )
.
如果要检查帖子在分类法中是否有给定的术语,请使用has_term()
功能:
if ( has_term( \'roast\', \'type\' ) ) {
}