按自定义分类名称对帖子进行排序

时间:2012-10-15 作者:Iladarsda

有没有可能sort posts (custom post type) by category / taxonomy (姓名,描述)?

例如,我的类别是

2012年第四季,一些帖子,一些帖子,一些帖子,2011年第四季,等等

3 个回复
最合适的回答,由SO网友:Mridul Aggarwal 整理而成

一种解决方案是-

$terms = get_terms(\'taxonomy-name\');
foreach($terms as $term) {
    $posts = get_posts(array(
            \'post_type\' => \'custom_post_type_name\',
            \'tax_query\' => array(
                array(
                    \'taxonomy\' => \'taxonomy-name\',
                    \'field\' => \'slug\',
                    \'terms\' => $term->slug
                )
            ),
            \'numberposts\' => -1
        ));
    foreach($posts as $post) {
        // do what you want to do with the posts here
    }
}

SO网友:nathan_393

我知道这是一个古老的问题,已经有了很好的答案,但我今天花了几个小时努力解决类似的问题,并想出了一个替代循环。

如果您想在分类法的归档页面上实现这一点,还可以稍微定制一下Mridul(优秀)的解决方案。换句话说,您可以使用此解决方案按其他分类法对自定义分类法存档进行排序。

我之所以分享这一点,是因为我今天花了四个小时来解决这个问题,如果其他人试图创建按不同分类法排序的自定义分类法档案,那么您就是这样做的。(另外,这是我在StackExchange上的第一个答案——请友好一些!)

这与Mridul的解决方案一模一样。查询要按其对帖子进行排序的分类法。

$terms = get_terms( array(
    \'taxonomy\' => \'custom_taxonomy_one\',
    \'parent\' => 0, // This helped me eliminate repetitive taxonomies; you may want to skip this
) );

foreach($terms as $term) {
    echo \'<h2>\' . $term->name . \'</h2>\'; // Echo the name of the term
这与Mridul的回答有点不同。您希望查询两个分类法,并确保它们之间的关系设置为“and”,这意味着列出的帖子满足两个分类法中的条件。

在这种情况下,“custom\\u post\\u type”中的帖子必须与第一个词的slug和另一个词的名称匹配。希望代码对每个人都有意义!

    $posts = get_posts(array(
            \'post_type\' => \'custom_post_type\', // Get posts from custom post type
            \'tax_query\' => array(
                \'relation\' => \'AND\', // posts must match both taxonomies
                array(
                    \'taxonomy\' => \'custom_taxonomy_one\',
                    \'field\' => \'slug\',
                    \'terms\' => $term->slug // match the slug for the term in the previous array
                ),
                array(
                    \'taxonomy\' => \'custom_taxonomy_two\',
                    \'field\' => \'slug\',
                    \'terms\' => \'custom_taxonomy_two_term_name\'
                )
            ),
            \'numberposts\' => -1
        ));
    foreach($posts as $post) {
       // Do Yo Thang
    }
}

SO网友:Iladarsda

备选回路,其中tax = category 和自定义post type = "results"

$args = array( \'taxonomy\' => \'category\' );
$terms = get_terms( \'category\', $args);

//START FOR EACH LOOP
foreach ($terms as $term) {

            $post_type = \'results\';
            $tax = \'category\';
            $tax_terms = get_terms( $tax );
            if ($tax_terms) {
                foreach ($tax_terms  as $tax_term) {
                $args = array(
                    \'post_type\' => $post_type,
                    "$tax" => $tax_term->slug,
                    \'post_status\' => \'publish\',
                    \'posts_per_page\' => -1,
                    \'caller_get_posts\'=> 1
                );



                $my_query = null;
                $my_query = new WP_Query($args);

                if( $my_query->have_posts() ) : ?>

                        // WHILE
                        <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>

                        // Do stuff

                        <?php endwhile; ?>
                        // END WHILE


                <?php else : ?>
    <?php endif; wp_reset_query(); ?>

}
// END FOR EACH LOOP

结束

相关推荐

随机显示10-Image for Loop中的一个图像

我有一个Wordpress函数,可以循环通过10个输入字段&;保存这些输入字段中的数据。输入的数据是图像的绝对链接或相对链接。循环如下所示。<?php for ($i = 1; $i < 11; $i++) { ?> <input type=\"text\" name=\"<?php echo \'fresh_banner\'.$i ?>\" value=\"<?php echo $settings[\'fresh_banner\'