按分类列出所有自定义帖子类型的帖子


25

有没有一种方法可以列出特定自定义帖子类型中的所有帖子,并按所附的自定义分类术语进行排列?

例如;

分类术语#1
职位类型
职位类型
职位类型

分类术语#2
职位类型
职位类型

非常感激任何的帮助。

谢谢。

Answers:


52

尝试这个

$custom_terms = get_terms('custom_taxonomy');

foreach($custom_terms as $custom_term) {
    wp_reset_query();
    $args = array('post_type' => 'custom_post_type',
        'tax_query' => array(
            array(
                'taxonomy' => 'custom_taxonomy',
                'field' => 'slug',
                'terms' => $custom_term->slug,
            ),
        ),
     );

     $loop = new WP_Query($args);
     if($loop->have_posts()) {
        echo '<h2>'.$custom_term->name.'</h2>';

        while($loop->have_posts()) : $loop->the_post();
            echo '<a href="'.get_permalink().'">'.get_the_title().'</a><br>';
        endwhile;
     }
}

我们获得分类法的所有术语,遍历它们,并触发标题链接到属于该术语的每个帖子。如果您需要对分类术语进行重新排序,则可以使用一个插件轻松完成。我相信,对分类法进行重新排序但是请注意,此插件在激活时会向您的表添加(!)另一列,并且在停用时不会将其删除


@GhostToast,您好:我的工作很不错,我有一个直接的问题,我该如何按分类法进行过滤,我有网球,高尔夫,足球,排球,这些代码将他们与经过分类检查的帖子一起带给他们,如何进行过滤只显示带有其帖子的“足球分类法”。
Rodrigo Zuluaga

@RodrigoZuluaga那将是一个基本的单个查询。带走$custom_termsforeach()然后只需'terms'手动定义弹头或您想要的任何东西。
GhostToast'3

我认为我有一点不同,但是您的代码非常好$ args = array('post_type'=>'publica','tax_query'=> array(array('taxonomy'=>'comision-publicaciones','field'= >'名称','术语'=> array($ ter_name)),),);
Rodrigo Zuluaga'3

1

这不是一个特别优雅的解决方案,但是您可以针对特定字词分别创建多个查询,然后将其输出。希望有人可以提出一种更好的自动拉动条件以修改输出/排序的方法。但是,这会让您前进。

<?php

//First Query for Posts matching term1
$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'taxonomy_1',
            'field' => 'slug',
            'terms' => array( 'term1' )
        ),
    ),
    'post_type' => 'my-post-type'
);
$query = new WP_Query( $args );

if ( have_posts() ) {

    $term = $query->queried_object;

    echo 'All posts found in ' . $term->name;

    while ( have_posts() ) : the_post();
        //Output what you want
        the_title();
        the_content();
    endwhile;
}

//RESET YOUR QUERY VARS
wp_reset_query();

//Second Query for term2
$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'taxonomy_1',
            'field' => 'slug',
            'terms' => array( 'term2' )
        ),
    ),
    'post_type' => 'my-post-type'
);
$query = new WP_Query( $args );

if ( have_posts() ) {

    $term = $query->queried_object;

    echo 'All posts found in ' . $term->name;

    while ( have_posts() ) : the_post();
        //Output what you want
        the_title();
        the_content();
    endwhile;
}

0

好东西!我一直在寻找GhostOne的解决方案。在我的情况下,自定义帖子类型为“ minining_accidents”,与此相关的自定义分类法为“ accident-types”,其中包含多个术语。我的想法是创建一个自定义窗口小部件,以显示此自定义分类法中术语下的帖子列表。在我的试运行中,它得到了我想要的。休息休息了。这是我的代码:

function fn_get_list_of_mining_accident_types()
{
    $custom_taxonomy='accident-types';  
    $custom_terms = get_terms($custom_taxonomy);    
    $str_return='<ul>';
    foreach($custom_terms as $custom_term) 
    {
        wp_reset_query();
        $args = array(
            'post_type' => 'minining_accidents',
            'tax_query' => array(               
                array(
                    'taxonomy' => $custom_taxonomy,
                    'field' => 'slug',
                    'terms' => $custom_term->slug,
                ),
            ),
        );  

        $loop = new WP_Query($args);

        $term_name=$custom_term->name;
        $term_slug=$custom_term->slug;
        $term_link=get_term_link($term_slug, $custom_taxonomy);

        $str_return.='<li><a href="'.$term_link.'">'.$term_name.'</a>';

        if($loop->have_posts()) 
        {
            $str_return.='<ol>';

            while($loop->have_posts()) : $loop->the_post();
                $str_return.='<li><a href="'.get_permalink().'">'.get_the_title().'</a></li> ';
            endwhile;

            $str_return.='</ol>';           
         }
         $str_return.='</li>';
    }
    $str_return.='</ul>';
    return $str_return;
}

是! 总有一个选项可以进一步改进代码。


-1

显示自定义分类中的自定义帖子列表

$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'your-custom-taxonomy',
            'field' => 'slug',
            'terms' => array( 'your-term' )
        ),
    ),
    'post_type' => 'your-post-type'
);
$loop = new WP_Query($args);
     if($loop->have_posts()) {
    $term = $wp_query->queried_object;
     while($loop->have_posts()) : $loop->the_post();
        //Output what you want      
   echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
      endwhile;
}

标题

  • 项目清单
  • 项目清单
  • 项目清单
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.