【问题标题】:How to remove ducplicate tags from custom tag list?如何从自定义标签列表中删除重复标签?
【发布时间】:2014-05-21 15:44:15
【问题描述】:

我有这段代码来显示当前类别中使用的标签,包括子类别:

if (is_category( )) {
  $cat = get_query_var('cat');
  $yourcat = get_category ($cat);
}
query_posts('category_name='.$yourcat->slug.'');
if (have_posts()) : while (have_posts()) : the_post();
  if( get_the_tag_list() ){
    echo $posttags = get_the_tag_list('<li>','</li><li>','</li>');
  }
endwhile; endif; 
wp_reset_query();

是否可以删除重复的标签?现在代码会多次而不是一次显示一些标签。

关于这段代码的另一个问题:我怎样才能像这样输出每个标签来创建一个复选框表单?

<input type="radio" name="tag" value="tag1" <?php if((isset($_GET["tag"])) && $_GET["tag"] == "tag1") { echo "checked";}?>> Tag1<br>

希望有人可以帮助我解决这个问题。提前致谢!

更新: 我忘了提到我在输入字段末尾使用代码if((isset($_GET["tag"])) &amp;&amp; $_GET["tag"] == "tag1") { echo "checked";} 来检查使用标签时的复选框,但是如果我使用该代码(在 html 中有效),页面将无法正确显示。

【问题讨论】:

  • 标签是重复的,因为您列出了具有相同标签的帖子标签。您需要一个与当前存档类别中的帖子相关联的标签列表吗?
  • 我需要一个标签列表(或它的单选复选框列表),这些标签来自当前类别中使用的标签,包括子类别。如果您在子类别页面上,那么它应该只显示在该子类别中使用的标签。使用此代码有效,但它应该只显示每个标签一次。

标签: wordpress forms checkbox tags


【解决方案1】:

我已经稍微修改了您的代码,但是现在您有一个标签 ID 数组,您可以将其用于任何目的,例如。下面添加了列表。

if (is_category()){
  $cat = get_query_var('cat');
  $yourcat = get_category ($cat);
}
$tag_IDs = array();
query_posts('category_name='.$yourcat->slug);
if (have_posts()) : while (have_posts()) : the_post();
  $posttags = get_the_tags();
  if ($posttags):
    foreach($posttags as $tag) {
    if (!in_array($tag->term_id , $tag_IDs)):
       $tag_IDs[] = $tag->term_id; 
       $tag_names[$tag->term_id] = $tag->name;
     endif;
    }
  endif;
endwhile; endif;
wp_reset_query();

echo "<ul>";
foreach($tag_IDs as $tag_ID){
    echo '<a href="'.get_tag_link($tag_ID).'">'.$tag_names[$tag_ID].'</a>';
}
echo "</ul>";

【讨论】:

  • 我用 id 代替了 term_id,对不起。
  • 谢谢!这个代码很好用!现在我尝试使用这行代码来显示输入字段:echo '&lt;input type="radio" name="tag" value="'.$tag_slug[$tag_ID].'"&gt; '.$tag_names[$tag_ID].'&lt;br&gt;'; 与此:$tag_slug[$tag-&gt;term_id] = $tag-&gt;slug; 但这不起作用。你有什么建议我该怎么做?
  • 哪里需要这个输入?
  • 而不是echo '&lt;a href="'.get_tag_link($tag_ID).'"&gt;'.$tag_names[$tag_ID].'&lt;/a&gt;';,它出现在每个(子)类别页面的侧边栏中。
  • 如果它们在正确的位置(在较低的 foreach 中输入,$tag_names 下方的 slug 数组),它们工作正常。
猜你喜欢
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 2014-09-15
相关资源
最近更新 更多