WP_QUERY错误的帖子数量

时间:2019-04-01 作者:Pat_Morita

我有16篇类型为“公文包”的公开帖子。对于下面的查询,“found\\u posts”是16。目前为止正确。

我已将“posts\\u per\\u page”设置为-1以查看所有这些内容。但其中只有8个得到渲染。wordpress设置每页的帖子数是10,所以这不是问题所在。也没有像WPML这样的多语言插件可以工作。

我做错了什么?

function portfolio_filter(){

$query = new WP_Query( array( \'posts_per_page\' => -1,\'post_status\' => \'publish\', \'post_type\' => \'portfolio\') );

$output = $query->found_posts; // Returns 16

if ( $query->have_posts() ) :
    while ( $query->have_posts() ) { 
        $query->the_post();

        $output.=\'<div class="entry filter_product">\';
        $output.=get_the_post_thumbnail($query->the_post()->ID,\'medium\');
        $output.=\'<h3 class="title">\'.get_the_title().\'</h3>\';
        $output.=\'</div>\';
    }

    wp_reset_postdata();

else :
    //show 404 error here -->
endif;
return $output;
}

2 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

但它们都是从数据库中获取的。

问题是你忽视了其中的一半。或者更确切地说,将其中的两个合并并显示为一个。

让我们看看您的代码:

while ( $query->have_posts() ) { 
    $query->the_post();  // <- here you call the_post() first time

    $output.=\'<div class="entry filter_product">\';
    // and in the next line you call the_post second time
    $output.=get_the_post_thumbnail($query->the_post()->ID,\'medium\');
    $output.=\'<h3 class="title">\'.get_the_title().\'</h3>\';
    $output.=\'</div>\';
}
每次调用\\u post方法时,都会告诉循环转到下一篇文章。因此,如果在一个循环中调用\\u post两次,那么将跳过两次post,而不是一次。

您应该更改此行:

$output.=get_the_post_thumbnail($query->the_post()->ID,\'medium\');
为此:

$output.=get_the_post_thumbnail(get_the_ID(),\'medium\');

SO网友:Tanmay Patel

希望此代码可以帮助您。

<?php
function portfolio_filter(){
$args = array(
    \'post_type\' => \'portfolio\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => -1,
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) :
while($query->have_posts()) : $query->the_post(); ?>
    <div class="entry filter_product">
        <?php the_post_thumbnail( \'medium\' ); ?>
        <h3 class="title"><?php echo get_the_title(); ?></h3>
    </div>
<?php endwhile;
wp_reset_postdata();
else : ?>
    <p>No Posts Found.</p>
<?php endif;
}
?>

相关推荐

The Loop not looping?

在进行了大量的故障排除和搜索之后,我想我终于明白了如何进行循环。但我似乎无法让它真正循环!我创建了一个子主题,并添加了functions.php 文件中包含以下代码:<?php function my_theme_enqueue_styles() { $parent_style = \'grow-thinkup-style-minimal\'; // This is \'twentyfifteen-style\' for the Twenty Fifteen the