2014-06-17 50 views
0

我试图让我的主页(home.php)显示一些自定义帖子类型的帖子缩略图,并通过它们进行分页。在主页上的Wordpress分页休息

适用于第一页,但是当我尝试到达第二页时,它不起作用。

,如果我下面的代码添加到我的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,我得到404第2页上。同样,重置固定链接也会得到相同的结果。

  • 我有17个职位与此自定义类型。
  • 显示16每页我得到2页看到相同的职位,并显示5每页我看到4页看到相同的职位。

    echo get_query_var('paged'); 
    

此输出0每次。

回答

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实例(其中循环遍历本地变量)解决了此问题。

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); 
+0

随着你的代码分页箭头不再显示。如果我尝试通过url('localhost/page/2')访问第2页,仍然会给我一个404。将变量$ results的名称更改为$ wp_query修复了此问题,但分页不起作用 –

+0

如果使用简单的分页插件:http://wordpress.org/plugins/tw-pagination/ 然后,您可以把这段代码放在循环之后: 'if(function_exists('tw_pagination'))tw_pagination($ results,'range = 4&anchor = 2&nextpage = Next&previouspage = Previous');' –

+0

确实解决了分页箭头的问题,看不到第2页 –