如何为自定义帖子类型的标记触发wp_query?

时间:2013-12-14 02:19:43

标签: wordpress

我想获取所有标有“热门”标签的article_type帖子。
我正在使用波纹管查询,但它返回所有帖子

query_posts(array( 'posts_per_page' => -1,'post_type'=>'article_type','order' => 'ASC','tags'=>array('hot')));


帮助我,提前谢谢你

3 个答案:

答案 0 :(得分:3)

Do not use query_posts

改为使用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中,您无需重置查询。