如何在WordPress中通过自定义分类获取帖子


How to get posts by custom taxonomy in WordPress?

在WordPress中,我试图从自定义帖子类型'color',自定义分类法'color-name'中获取帖子,使用以下内容:

注:我有一个自定义的帖子类型,颜色,自定义的帖子标题的东西,如,'珊瑚','牡丹'。我还有一个自定义分类法color-name。通过保存颜色帖子的挂钩,创建了自定义分类法中的类别。然后,自定义的帖子类型Color,可以用其他相关的颜色标记。

$slug = str_replace(" ", "_", $page_title);
$slug = strtolower($slug);
//Slug is - 'coral', 'peony', etc.
$args = array( 'post_type' => 'color',
               'posts_per_page' => -1,
               'tax_query' => array( array (
                       'taxonomy' => 'color-name',
                       'field' => 'slug',
                       'terms' => $slug
                                   ) )
);
$myposts = query_posts( $args );

我在谷歌搜索后尝试了很多变体,没有任何工作-我要么得到所有帖子,要么没有帖子。这是我尝试过的另一个版本的args:(结果没有帖子):

  $args = array('color-name' => $page_title,
                'post_type' => 'color',
                'post_status' => 'publish',
                'posts_per_page' => -1,
                'caller_get_posts'=> 1
               );

我以前就纠结过这个问题,放弃了,只是做了一个自定义sql调用。有没有人确切地知道如何通过WordPress函数来实现这个功能?

我会用WP_Query代替query_posts()。例如:

$args = array(
    'post_type' => 'color',
    'tax_query' => array(
        array(
            'taxonomy' => 'color-name',
            'field' => 'slug',
            'terms' => $slug
        )
    )
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // Do something.
    }
} else {
    // No posts found.
}
wp_reset_postdata();

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