WP_QUERY忽略`post_type`参数

时间:2018-07-25 作者:Summer Developer

<?php
    $args = array(
        \'post_type\'=>\'weather_today\',
        \'orderby\'=>\'ID\',
        \'order\'=>\'ASC\',
        \'posts_per_page\'=>1
    );
    $query = new WP_Query($args);
    if ($query->have_posts()) {
        while ( have_posts() ) : the_post();
            the_content();
        endwhile;
    }
    wp_reset_postdata();
?>
输出帖子内容(the_content()) 那不是weather_today 类型为什么会这样?我检查了我的SQL,在wp_posts 我只有一个职位post_type = "weather_today" 而且它不是被输出的那个。此查询位于我的标题中。。。我相信以上任何其他自定义查询。此外,似乎其他参数都受到尊重,我得到的职位只是1 最后一篇文章是ID.

那么为什么post_type, 是否忽略此查询中最重要的参数?

2 个回复
最合适的回答,由SO网友:Alt C 整理而成

Try this

<?php
    $args = array(
        \'post_type\'=>\'weather_today\',
        \'orderby\'=>\'ID\',
        \'order\'=>\'ASC\',
        \'posts_per_page\'=>1
    );
    $query = new WP_Query( $args );
    while ( $query->have_posts() ) : $query->the_post();

        //loop 

    endwhile;
    wp_reset_postdata();
?>
SO网友:Krzysiek Dróżdż

代码的问题很简单。。。您使用您的自定义$query 在if语句中,但使用全局$wp_query 在while循环中。。。

<?php
    $args = array(
        \'post_type\'=>\'weather_today\',
        \'orderby\'=>\'ID\',
        \'order\'=>\'ASC\',
        \'posts_per_page\'=>1
    );
    $query = new WP_Query($args);  // <- here you create custom $query
    if ($query->have_posts()) {  // <- here you check if it has any posts
        while ( have_posts() ) : the_post(); // <- here you don\'t use it
        // it should be:  while ( $query->have_posts() ) : $query->the_post();
            the_content();
        endwhile;
    }
    wp_reset_postdata();
?>
另一个建议-不要使用{: 同一上下文中的符号-不利于可读性;)

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post