类别ID上的query_posts不起作用

时间:2015-08-12 06:43:53

标签: php wordpress custom-post-type

$posts = query_posts(array('post_type'=>'sedan', 'category'=>'1', 'posts_per_page'=>'4'));

上述查询中的category参数似乎无法按预期工作。它显示了Sedan帖子类型中的所有帖子,但我想在category ID = 1中仅指定Sedan post type的类别。

3 个答案:

答案 0 :(得分:5)

尝试

$posts = query_posts(array('post_type'=>'sedan', 'cat'=>'1', 'posts_per_page'=>'4'));

cat代替category

也不会使用 query_posts()进行查询。

https://codex.wordpress.org/Function_Reference/query_posts

使用get_posts()WP_Query()

您可以通过以下方式实现相同目标:

$posts = get_posts(array('post_type'=>'sedan', 'category'=>'1', 'posts_per_page'=>'4'));

然后更安全地修改主查询。

我自己总是更喜欢WP_Query

$args = array(
    'post_type'=>'sedan',
    'cat'=>'1',
    'posts_per_page'=>'4'
);

$posts = new WP_Query($args);

$out = '';

if ($posts->have_posts()){
    while ($posts->have_posts()){
        $posts->the_post(); 
        $out .= 'stuff goes here';
    }
}
wp_reset_postdata();

return $out;

答案 1 :(得分:2)

尝试使用get_posts refrence

$args = array( 'posts_per_page' => 5, 'offset'=> 1, 'category' => 1 );

$myposts = get_posts( $args );

或其他选项是使用WP_Query

$new = new WP_Query('post_type=discography&category_name=my-category');
while ($new->have_posts()) : $new->the_post();
     the_content();
    endwhile;

或使用cat id

$cat_id = get_cat_ID('My Category');
$args=array(
  'cat' => $cat_id,
  'post_type' => 'discography',
  'post_status' => 'publish',
  'posts_per_page' => 5,
  'caller_get_posts'=> 1
);
$new = new WP_Query($args);

答案 2 :(得分:0)

这对我有用。

$args=array(
'posts_per_page' => 50,    
'post_type' => 'my_custom_type'
'tax_query' => array(
    array(
        'taxonomy' => 'category', //double check your taxonomy name in you db 
        'field'    => 'id',
        'terms'    => $cat_id,
    ),
   ),
 );
$wp_query = new WP_Query( $args );