我试图让我的主页(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。同样,重置永久链接会产生相同的结果。
每页显示16个,我看到相同的帖子有2个页面,每个页面显示5个,我看到相同的帖子有4个页面。
echo get_query_var( 'paged' );
每次输出0。
答案 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实例解决问题。