显示来自分类标签父母的标签子标签的帖子

时间:2014-02-05 作者:digifrog

首先,我试图显示一个名为“组”的分类法中的所有标记。然而,该分类法目前包含两个标记,其中一个标记具有多个标记子级。

我想显示属于这些孩子的所有帖子。所以最终结果应该是这样的:

父标签A子标签发布数据等

  • “父”标记B

    <?php
    $taxonomyName = "group";
    $terms = get_terms($taxonomyName,array(\'parent\' => 0));
    foreach($terms as $term) {
            echo \'<a href="\'.get_term_link($term->slug,$taxonomyName).\'">\'.$term->name.\'</a>\';
            $term_children = get_term_children($term->term_id,$taxonomyName);
            echo \'<ul>\';
            foreach($term_children as $term_child_id) {
                    $term_child = get_term_by(\'id\',$term_child_id,$taxonomyName);
                    echo \'<li><a href="\' . get_term_link( $term_child->name, $taxonomyName ) . \'">\' . $term_child->name . \'</a></li>\';
            }
            echo \'</ul>\';
    }
    ?>
    
  • 2 个回复
    SO网友:digifrog

    如果有人感兴趣,下面是我的解决方案。学分归Akshay Paghdar所有。

    $taxonomyName = "group";
    $terms = get_terms($taxonomyName,array(\'parent\' => 0));
    echo \'<ul>\';
    foreach($terms as $term)
    {
        echo \'<li><a href="\'.get_term_link($term->slug,$taxonomyName).\'">\'.$term->name.\'</a>\';
        $term_children = get_term_children($term->term_id,$taxonomyName);
        echo \'<ul>\';
        foreach($term_children as $term_child_id)
        {
            $term_child = get_term_by(\'id\',$term_child_id,$taxonomyName);
            echo \'<li><a href="\' . get_term_link( $term_child->name, $taxonomyName ) . \'">\' . $term_child->name . \'</a>\';
            echo \'<ul>\';
            $tax_arg = array(
                \'post_type\' => \'post\',
                \'posts_per_page\' => -1,
                \'post_status\' => \'publish\',
                \'tax_query\' => array(
                    array(
                        \'taxonomy\' => $taxonomyName,
                        \'field\' => \'id\',
                        \'terms\' => $term_child_id
                    )
                )
            );
            $posts = get_posts($tax_arg);
            foreach($posts as $post)
            {
                echo \'<li><a href="\' . get_permalink($post->ID) . \'">\' . $post->post_title . \'</a></li>\';
            }
            echo \'</ul>\';
            echo \'</li>\';
        }
        echo \'</ul>\';
        echo \'</li>\';
    }
    echo \'</ul>\';
    

    SO网友:kaiser

    您正在搜索的内容(从阅读到您正在将术语包装在链接中)可能是

    echo get_the_term_list( $postID, $taxonomy, $before, $separator, $after );
    
    要筛选列表,可以在get_the_terms 滤器内部get_the_term_list() 有两个过滤器。第一个是使用get_the_terms() 检索提供所述过滤器的术语。第二个是term_links-{$taxonomy_name} 并且有一个参数,它是指向术语归档页的HTML锚的数组。

    您将要使用第一个:

    add_action( \'get_the_terms\', \'WPSE133490getTermsCb\', 10, 3 );
    echo get_the_term_list(
        get_the_ID(),
        \'custom_taxonomy_name\',
        "<ul><li>",
        "</li><li>",
        "</li></ul>"
    );
    
    回拨将适合您的主题function.php 文件,并这样做-如果你想使用它作为插件,否则删除前三行。

    <?php
    defined( \'ABSPATH\' ) or exit;
    /** Plugin Name: (#133490) Remove Term Parents from link list */
    
    function WPSE133490getTermsCb( $terms, $postID, $tax )
    {
        remove_filter( current_filter(), __FUNCTION__ );
        $filtered = wp_list_filter(
            $terms,
            array(
                \'parent\'          => 0,
                // Only when filtering the built in "Category"-taxonomy
                // \'category_parent\' => 0,
            ),
            // AND: All args must match
            // OR:  Only one arg must match
            // NOT: Not arg must match
            \'AND\'
        );
    
        return $terms;
    }
    

    结束

    相关推荐

    Copy post taxonomy?

    我是Wordpress的新手,我想做的是:创建一个分类法(课程),该分类法与POST一样有效,但有区别:我需要为课程添加一些字段(如课程成本、年龄跨度、课程每周的哪一天等)。我想我可以在帖子分类中添加自定义字段,但我想将“普通帖子”与“课程”分开。我在PHP编程方面有很多经验,但Wordpress对我来说是新的。我了解分类法和挂钩的概念,并且了解WP如何处理主题、子主题、插件等。我在安装了一个名为Simple Taxonomy的插件https://github.com/herewithme/simple-