Grouped custom taxonomy query

时间:2013-06-28 作者:Lino Sabato

我已经创建了

自定义帖子类型:图像库自定义分类:媒体类别(在媒体类别下):categoria uno和categoria due我需要打印按类别分组的记录,例如:

uno分类

记录1,记录2,记录3,分类到期

记录1

  • 记录2
  • 记录3
    • 任何人都可以帮助我进行此查询吗?提前谢谢你

    1 个回复
    最合适的回答,由SO网友:rfrq 整理而成

    如果需要嵌套查询,首先应该考虑需要哪些数据。在您的示例中,您需要tanonomy的所有术语以及属于每个分类法的所有帖子。因此,第一步应该是找到一种循环遍历分类法所有术语的方法:

        /* TAXONOMIES  */
        // args
        $args_tax = array(
            \'order\' => ASC);
        // get terms
        $terms = get_terms($tax, $args_tax);
        $count = count($terms);
        if ($count > 0) {
            echo "<ul>";
            foreach ($terms as $term) {
                echo "<li>";
                echo $term->name;
                echo "</li>";
                }
            echo "</ul>";
        }
    

    http://codex.wordpress.org/Function_Reference/get_terms

    在下一步中,您必须循环浏览帖子:

        /* CPT POSTS  */
        // args
        $args_cpt = array(
                \'post_type\' => $cpt,
                \'tax_query\' => array(
                        array(
                            \'taxonomy\' => $tax,
                            \'field\' => \'slug\',
                            \'terms\' => $term->slug
                        )
                 )
         );
        // get posts
        $tax_query = new WP_Query($args_cpt);
        if ($tax_query->have_posts()) {
                echo "<ul>";
                while ($tax_query->have_posts()) {
                        $tax_query->the_post();
                        echo "<li>";
                        echo get_the_title();
                        echo "</li>";
                        }                    
                echo "</ul>";
        }
        wp_reset_postdata();
    

    http://codex.wordpress.org/Class_Reference/WP_Query

    现在必须将这两个循环组合起来。例如,在函数中放置的函数中。php:

    /**
     * RFRQ
     * the_posts_by_tax
     */
    
    if (!function_exists(\'the_posts_by_tax\')) {
        function the_posts_by_tax($cpt, $tax) {
            /* TAXONOMIES  */
            // args
            $args_tax = array(
                \'order\' => ASC);
            // get terms
            $terms = get_terms($tax, $args_tax);
            $count = count($terms);
            if ($count > 0) {
                echo "<ul>";
                foreach ($terms as $term) {
                    echo "<li>";
                    echo $term->name;                
                    /* CPT POSTS  */
                    // args
                    $args_cpt = array(
                        \'post_type\' => $cpt,
                        \'tax_query\' => array(
                            array(
                                \'taxonomy\' => $tax,
                                \'field\' => \'slug\',
                                \'terms\' => $term->slug
                            )
                        )
                    );
                    // get posts
                    $tax_query = new WP_Query($args_cpt);
                    if ($tax_query->have_posts()) {
                        echo "<ul>";
                        while ($tax_query->have_posts()) {
                            $tax_query->the_post();
                            echo "<li>";
                            echo get_the_title();
                            echo "</li>";
                        }                    
                        echo "</ul>";
                    }
                    wp_reset_postdata();
                    echo "</li>";
                }
                echo "</ul>";
            }
        }
    }
    
    您可以通过以下方式调用循环:

    the_posts_by_tax($cpt, $tax)
    

    结束

    相关推荐

    Custom taxonomy in short code

    我在网格显示的主题中使用短代码。代码仅考虑类别ID。我还想添加自定义分类法,以便将输出作为分类帖子和自定义分类帖子。 function five_col( $atts ) { extract( shortcode_atts( array( \'cats\' => \'1\', \'num\' => \'2\', \'offset\' => \'0\', ), $atts ) );