自定义页面模板显示帖子环(WordPress的查询)
问题描述:
这已经不是我第一次被困在此与WordPress ... 事情是这样的:我想有一个自定义页面模板显示帖子环(WordPress的查询)
- 一个“投资组合“页面(设置为首页)显示最后16个帖子的标签组合
- 显示最后XX(WP默认)帖子的”博客“页面。
我读了很多关于查询,头版,家庭等,我的结论是,我应该
- 构建两页
- 分配一个不同的模板,他们每个人,用定制设计
- 不为此做一个custom query in my template;因为它会打破 分页:next_posts_link(),例如,将显示 什么也没有,因为它基于主查询,而不是自定义查询。
强烈建议您使用pre_get_posts过滤 代替query_posts(),并通过检查is_main_query
所以,as recommanded in the codex改变主查询,所以我决定过滤function.php中的pre_get_posts,而不是直接在投资组合模板中使用wp_query(...)。
add_action('pre_get_posts', 'cargo_portfolio');
然后我设置一些条件来检查我在正确的网页上:
function cargo_portfolio($query) {
if (!$query->is_main_query()) return;
if ($query->get('page_id') && ($query->get('page_id') == 128)){ //128 is my portfolio page
//edit query here
}
}
我不想用一个静态的数字(128),所以我发现这个代替(对于投资组合代码/头版)
function cargo_portfolio($query) {
if (!$query->is_main_query()) return;
//check is static home page, since is_front_page() is not working yet at this level
if ($query->get('page_id') && ($query->get('page_id') == get_option('page_on_front'))){
//edit query here
}
}
我开始编辑与此代码查询:
$query->set('page_id', null);
$query->set('post_type', 'post');
$query->set('tag', 'portfolio');
$query->set('showposts', 16);
所以我结束了此功能:
function cargo_portfolio($query) {
if (!$query->is_main_query()) return;
//check is static home page, since is_front_page() is not working yet at this level
if ($query->get('page_id') && ($query->get('page_id') == get_option('page_on_front'))){
$query->set('page_id', null);
$query->set('post_type', 'post');
$query->set('tag', 'portfolio');
$query->set('showposts', 16);
}
}
WELL。感谢您阅读... :)
这里的问题是,我取消设置PAGE_ID,改变post_type瓦尔(因为我想取个),而且它打破了查询。现在我登陆404页面。
有没有人有一个很好的解决方案来实现这一目标?之前,我使用的是The Loops plugin,但是它自2年以来没有更新过,并且已经损坏。 +:我确定应该有一个简单的方法来做到这一点。
非常感谢!
答
最后,我最后直接在模板中使用自定义查询。
可以通过添加查询参数,将其使用分页功能get_next_posts()和get_previous_posts(),在这里看到:
Wordpress pagination (next_posts_link) on custom wp_query not showing。
谢谢!