为什么“博客页面最多显示”会干扰我的自定义wp_Query?

时间:2011-06-23 作者:Andrew

我对WordPress非常陌生,尤其是在创建如下自定义循环时。这很好,但是我很困惑为什么“博客页面最多显示”(在“设置>阅读”下)会干扰查询。

在下面的示例中,我将post\\u per\\u page设置为10。如果我将默认的“博客页面最多显示”设置保留为10篇文章,那么效果很好,因为它们都匹配并正确计算页面。但是,如果我将“posts\\u per\\u page”更改为5,我会在分页中添加一些额外的页面,单击时会显示“page not found”。

是否可以从管理员处覆盖此设置?我认为创建一个自定义wp\\u查询无论如何都会覆盖它。我做错了什么?

我还使用wp\\u pagenvi进行分页,如下面的示例所示,并且有一个自定义的post类型“listing”。我正在使用WordPress 3.1.3。

<?php $custom_query = new WP_Query( array( \'post_type\' => \'listing\', \'posts_per_page\' => 10, \'paged\' => get_query_var(\'paged\') ) ); ?>  

<?php if ( $custom_query->have_posts() ) : while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>  

    <div id="post-<?php the_ID(); ?>">   
        // stuff here
    </div>

<?php endwhile; endif; ?>

//wp_pagenavi 
<?php 
    if (function_exists(\'wp_pagenavi\')) {
    wp_pagenavi( array( \'query\' => $custom_query ) ); } 
?>

<?php wp_reset_postdata(); ?>

4 个回复
SO网友:Scott
<?php
global $query_string;
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$custom_query = new WP_Query( array( \'post_type\' => \'listing\', \'posts_per_page\' => 10, \'paged\' => $paged ) );
?>

add the code $paged =...

SO网友:s_ha_dum

“博客页面最多显示”或多或少就是它看起来的样子。这是分页存档列表每页显示的帖子数。posts_per_page 覆盖特定查询的该设置。

你看到的不仅仅是posts_per_page 值,因为粘滞的帖子会被随意移动并固定到结果集的开头,导致第一页posts_per_page + “粘性帖子计数”帖子数量。我承认这很奇怪,但它源于将粘性帖子作为序列化数组存储在$wpdb->options 而不是作为中的条目$wpdb->postmeta.

要防止粘帖变戏法,请传递\'ignore_sticky_posts\' => true 作为你的WP_Query.

SO网友:Scott

“博客页面最多显示”所做的是计算出当您的网站显示每页的最大帖子时,它实际有多少页面。然后,如果用户转到没有帖子的页面,它会将用户发送到错误页面。

结束

相关推荐