我想获取所有标有“热门”标签的article_type帖子。
我正在使用波纹管查询,但它返回所有帖子
query_posts(array( 'posts_per_page' => -1,'post_type'=>'article_type','order' => 'ASC','tags'=>array('hot')));
帮助我,提前谢谢你
答案 0 :(得分:3)
改为使用WP_Query。
至于您的代码,没有tag parameter称为“代码”。如果要查询多个标记,请使用'tag__in'
。如果没有,请使用'tag'
。此示例使用'tag__in'
:
<?php
$q = new WP_Query(array(
'posts_per_page' => -1,
'post_type'=>'article_type',
'order' => 'ASC',
'tag__in'=>array('hot')
));
if($q->have_posts()) : while($q->have_posts()) : $q->the_post();
//Post stuff.....
endwhile;endif;
?>
答案 1 :(得分:0)
不要在 wp_query 中使用tag =,而是使用 post_tag = ,这肯定会解决您的问题。
答案 2 :(得分:-1)
请勿使用查询期。 query_posts和wp_query都影响全局变量。请改用get_posts,然后您不必担心您的查询会影响应用程序/主题的其他部分。
<?php
$posts = get_posts(array(
'posts_per_page' => -1,
'post_type'=>'article_type',
'order' => 'ASC',
'tag__in'=>array('hot')
));
foreach ($posts as $post) {
setup_postdata($post);
// post stuff
}
?>
或者,如果您不想打扰$ post global,您可以重命名您的值。这里需要注意的是你不能使用setup_postdata(),因此必须使用id来获取GET值。例如:
<?php
$posts = get_posts(array(
'posts_per_page' => -1,
'post_type'=>'article_type',
'order' => 'ASC',
'tag__in'=>array('hot')
));
foreach ($posts as $pst) {
echo get_the_title($pst->ID);
}
?>
在示例2中,您无需重置查询。