WordPress分页在主页上休息

时间:2014-06-17 04:39:34

标签: php wordpress pagination

我试图让我的主页(home.php)显示自定义帖子类型的几个帖子缩略图,并分散所有帖子。

第一页的工作正常,但当我尝试进入第二页时,它无法正常工作。

如果我将以下代码添加到我的functions.php

function homepage_custom( $query ) 
{
    if ($query->is_home() && $query->is_main_query()) 
    {
        $query->set('post_type', array( 'custom' ));
    }
}
add_action( 'pre_get_posts', 'homepage_custom' );

我没有发帖。

在没有检查主查询的情况下再次尝试

function homepage_custom( $query ) 
{
    if ($query->is_home()) 
    {
        $query->set('post_type', array( 'custom' ));
    }
}
add_action( 'pre_get_posts', 'homepage_custom' );

我收到了第一篇文章(我在每页上显示16条)。当我转到第二页时,URL显示" localhost / page / 2"但我看到相同的16个帖子。将永久链接重置为默认值会给出相同的结果。

如果我尝试直接从home.php查询:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(array("post_type" => "custom", "paged" => $paged));

我看到前16个,我在第2页得到404。同样,重置永久链接会产生相同的结果。

  • 我有17个这种自定义类型的帖子。
  • 每页显示16个,我看到相同的帖子有2个页面,每个页面显示5个,我看到相同的帖子有4个页面。

     echo get_query_var( 'paged' ); 
    

每次输出0。

2 个答案:

答案 0 :(得分:0)

尝试使用此代码:

$pager_id = get_query_var('paged');
$postsPerPage = 5;

if($pager_id != 0) {
    $search_args = array( 'post_type' => 'custom', 'post_status' => 'publish', 'posts_per_page' => $postsPerPage, 'paged' => $pager_id);
} else {
    $search_args = array( 'post_type' => 'custom', 'post_status' => 'publish', 'posts_per_page' => $postsPerPage);
}

$results = new WP_Query( $search_args );

答案 1 :(得分:0)

猜猜我找到了。

在同一页面中,我必须显示两种不同的自定义帖子类型。一个帖子类型在主要区域显示,每页16个。另一个用于填充侧栏中的列表。

使用这段代码我改变主查询

function homepage_custom( $query ) 
{
    if ($query->is_home() && $query->is_main_query()) 
    {
        $query->set('post_type', array( 'custom' ));
    }
}
add_action( 'pre_get_posts', 'homepage_custom' );

但是当我在home.php中使用以下内容时

get_side_bar();

主要查询以某种方式被忽略,这就是为什么我对主查询的检查一无所获。如果没有主要的查询检查,我总是在搜索我的自定义帖子类型,它适用于前16个帖子,然后来自侧栏的查询以某种方式打破了它,它失去了对要显示的帖子和无论页面如何,我最终都会这样做。

使用wp_reset_query()方法,从sidebar.php中删除此查询,或者使用循环遍历局部变量的WP_query实例解决问题。