如何将具有自定义帖子类型的每个标记的列表项显示为数据筛选器和文本


How to display list items with each tag of custom post-types as data-filter and text?

作为 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后类型,让我们检查(或输出(,例如对于同位素脚本,这个"类别"存在哪些标签并显示它们。

我的解决方案留下的问题是检查哪些标签是双倍的,然后首先从数组中减去它们。