Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将带有每个自定义帖子类型标记的列表项显示为数据过滤器和文本?_Php_Wordpress_Tags - Fatal编程技术网

Php 如何将带有每个自定义帖子类型标记的列表项显示为数据过滤器和文本?

Php 如何将带有每个自定义帖子类型标记的列表项显示为数据过滤器和文本?,php,wordpress,tags,Php,Wordpress,Tags,作为一个php新手,我很难实现一个简单的目标 到目前为止,我得到了以下代码(在php模板文件中): 在我的自定义帖子类型“参考文档”中,我有一个201320142015年的可用标签列表 现在,事实上,我上面的代码正在工作,但我希望根据用户可能在post类型中输入标记的年数输出li列表。(20162017年最终也是如此……) 所以我想我需要创建一个带有php循环的列表,或者以我的post类型的可用标记作为参数的任何东西。到目前为止,我已经尝试过以下方法: <?php

作为一个php新手,我很难实现一个简单的目标

到目前为止,我得到了以下代码(在php模板文件中):


在我的自定义帖子类型“参考文档”中,我有一个201320142015年的可用标签列表

现在,事实上,我上面的代码正在工作,但我希望根据用户可能在post类型中输入标记的年数输出li列表。(20162017年最终也是如此……)

所以我想我需要创建一个带有php循环的列表,或者以我的post类型的可用标记作为参数的任何东西。到目前为止,我已经尝试过以下方法:

<?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>';
        }
    }
?>


事实上,没有更多的错误,但也没有发生任何事情。我猜这意味着“tags”数组是空的。但是为什么呢?“我的自定义帖子类型”中指定了标记。正如我所说,我在这里真的很新,所以我猜我的代码包含一些语义疾病。请检查

我之所以成功,至少部分是因为这样做:

<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 post类型,让我们检查(或输出)I.g.对于同位素脚本,这个“类别”有什么标签,并显示它们


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

您得到了什么错误?警告:为/homepages/24/d469239235/htdocs/../wp content/themes/az_alice-child/template-investors-reference-docs.php中的foreach()提供的参数无效,这仅仅意味着你的
$tags
不是wp文档中的数组,示例在循环遍历它们之前执行if($tags)。可能您没有任何标记,并且您的tags变量为空?转储get_the_tags函数的结果,查看它是否获取任何标记
<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;?>