Wordpress:自定义标记的条件函数(if / else)

时间:2013-07-20 17:14:20

标签: php wordpress wordpress-theming

我正在使用一个名为“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”包含在这个条件中。

请帮忙。我很感激。

3 个答案:

答案 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_tagWordPress 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_tagsget_tags以及这些WordPress答案(this onethis 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比条件名更容易在条件中使用。