我正在使用一个名为“price_tag”的自定义类型标签来显示它们的列表,我用这个:
<?php if(get_the_term_list($post->ID, 'price_tag')) echo get_the_term_list($post->ID, 'price_tag', '', ' - ', '' ); else echo __('No Tags', 'custom-lang'); ?>
我想要的是使用“price_tag”创建条件,以便在帖子具有特定“price_tag”时显示文本
所以我想试试这个
<? if ( has_tag ('certaintag' ) ) { ?>
Show something
<? } else {} ?>
“cetainbtag”只是一个标签,我想用它来显示所有包含该标签的帖子中的文字。
但我无法让它工作,因为我不是wordpress techie,我不知道如何将“price_tag”包含在这个条件中。
请帮忙。我很感激。
答案 0 :(得分:0)
你可以使用wordpress的wp_get_post_tags($post->ID);
获取帖子的所有标签,它会返回数组,你必须循环遍历数组才能获得标签
$tags=wp_get_post_tags($post->ID);
$alltags=array();
foreach($tags as $t){
$alltags[]=$t->taxonomy;
}
如果条件
,请使用inarray
if (in_array("certaintag", $alltags)) {
Show something
}else{
}
希望它有意义
答案 1 :(得分:0)
has_tag
的原型是
has_tag( $tag, $post );
如果你在循环中,那么你可以使用
if( has_tag( 'price_tag' ) ) {
// price_tag exists, do your job here
}
以上代码会检查,如果当前post
附加了price_tag
标记,您还可以为多个标记传递数组,即
if( has_tag( array('price_tag', 'another_tag') ) ) {
// ...
}
如果要检查循环外部是否存在price_tag
,则可以使用
if( has_tag( 'price_tag', $post ) ) {
// price_tag exists, do your job here
}
在这种情况下,$post
是您查询过的$post
对象。请查看Codex
上的has_tag和WordPress forum
上的此post。
您也可以使用has_term( $term, $taxonomy, $post ),即
if( has_term( 'price_tag', 'post_tag' ) ) {
// do something
}
此外,term_exists( $term, $taxonomy, $parent )可以如下所示使用
$term = term_exists( 'price_tag', 'post_tag' );
if ( $term !== 0 && $term !== null ) {
// The term 'price_tag' is used as a post tag;
}
如果代码存在,上面的代码将返回术语id
(在这种情况下为price_tag
)。
同时检查Codex
上的get_the_tags和get_tags以及这些WordPress答案(this one和this one),希望您能找到任何人的解决方案这些
答案 2 :(得分:0)
我使用Dianaj的方法,但有一些语法更改:
$tags = get_the_tags($post->ID);
if ($tags) {
foreach ($tags as $t) {
$tag_array[] = $t->slug;
}
if (in_array('certaintag',$tag_array)) {
//Do something
} else {
//Do something else
}
}
如果您将此代码段放在函数中,请不要忘记在第一行代码之前添加global $post;
。另请注意,我使用标签的slug而不是名称。我发现slug比条件名更容易在条件中使用。