0

我正在使用一个名为“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 技术人员,我不知道如何在这个条件中包含“price_tag”。

请帮忙。我很感激。

4

3 回答 3

0

的原型has_tag

has_tag( $tag, $post );

如果你在循环中,那么你可以使用

if( has_tag( 'price_tag' ) ) {
    // price_tag exists, do your job here
}

上面的代码会检查,如果当前postprice_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您查询的对象。看看has_tag on和Codex这篇文章WordPress forum

您也可以使用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

还要检查get_the_tagsget_tags以及Codex这些 WordPress 答案(这个这个),希望你能从其中任何一个那里找到解决方案。

于 2013-07-20T18:25:07.710 回答
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 在条件句中比标签名称更容易使用。

于 2013-07-20T21:38:06.440 回答
0

您可以使用 wordpresswp_get_post_tags($post->ID);获取帖子的所有标签,它将返回数组,您必须遍历数组才能获取标签

$tags=wp_get_post_tags($post->ID);
$alltags=array();
foreach($tags as $t){
$alltags[]=$t->taxonomy;
}

然后inarray在你使用 if 条件

if (in_array("certaintag", $alltags)) {
 Show something
}else{

}

希望有意义

于 2013-07-20T17:29:08.953 回答