作为 php 的新手,我很难实现一个我想非常简单的事情。
到目前为止,我得到了这段代码(在 php 模板文件中(:
<?php
//Define my custom post type name in the arguments
$args = array('post_type' => 'reference-document');
?>
<ul>
<li><a href="#" data-filter=".2013">2013</a></li>
<li><a href="#" data-filter=".2014">2014</a></li>
<li><a href="#" data-filter=".2015">2015</a></li>
</ul>
在我的自定义帖子类型"参考文档"中,我有一个可用标签列表,其中包含 2013、2014、2015 年
现在,实际上,我的上述代码正在工作,但我希望根据用户在 post-type 中可能作为标签输入的年数来输出 li 列表。(所以最终也是2016年,2017年...
所以我想我需要创建一个带有 php 循环的列表,或者将我的 post-type 的可用标签作为参数的任何内容。到目前为止,我已经尝试了类似的东西:
<?php
$tags = get_the_tags();
foreach ( $tags as $tag ) {
echo '<li><a href="#" data-filter=".'.esc_attr($tag->tag_name).'">'.esc_attr($tag->tag_name).'</a></li>';
}
?>
以获得与我"手动"实现的相同输出。但这会抛出错误,我被困在这里。任何人都可以给我正确的代码?
请不要将我转发到官方标准WP文档,因为我试图理解它们但没有成功。我需要具体的代码。然后我可能会理解它是如何工作的。提前非常感谢!
编辑当我在代码中添加 if 语句时:
<?php
$tags = get_the_tags();
if(!empty($tags)) {
foreach ( $tags as $tag ) {
echo '<li><a href="#" data-filter=".'.esc_attr($tag->tag_name).'">'.esc_attr($tag->tag_name).'</a></li>';
}
}
?>
事实上,没有更多的错误,但也什么也没发生。我想这意味着"标签"数组是空的。但是为什么?在我的自定义帖子类型中分配了标签。正如我所说,我在这里真的很新,所以我想我的代码包含一些语义疾病。请检查!
我至少部分地通过这样做取得了成功:
<ul>
<li><a href="#" class="has-items selected" data-filter="*">All</a></li>
<?php
//Define the loop based on arguments
$loop = new WP_Query( $args );
//Display the contents
while ( $loop->have_posts() ) : $loop->the_post();
?>
<li><a href="#" data-filter=".<?php
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
echo $tag->slug;
}
}
?>"><?php
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
echo $tag->slug;
}
}
?></a></li>
<?php endwhile;?>
似乎我缺乏理解为自定义帖子类型添加标签意味着什么,因为只要不循环浏览附加它们的帖子,似乎就无法检索它们。我认为可以说:好的,这里有XXX后类型,让我们检查(或输出(,例如对于同位素脚本,这个"类别"存在哪些标签并显示它们。
我的解决方案留下的问题是检查哪些标签是双倍的,然后首先从数组中减去它们。