如何简化你的生活
我会走一条相当简单的路线:
添加“主/父”页面在此处应用模板将“子”页面添加到此主页面更改查询以将其包含在其中作为快速测试插件的代码示例这里有一个(未测试的)插件,它修改查询参数,不仅将其减少为单个查询,而且修改主查询,因此无需提高性能。
解释
我不确定如何在函数中检索父帖子(当前)ID。我想你必须手动设置。无论如何:尝试一下
get_queried_object_id()
(这可能不起作用)或查看是否可以从
$query
对象您还可以将第二个过滤器附加到
post_clauses
只需更改此筛选器中的参数(其中
get_queried_object_id()
应已存在(或不存在)。
此函数所做的一件好事是附加orderby
值为menu_order
, 因此,您可以使用默认情况下page post类型支持的内容。在我看来,您应该尽可能多地利用core提供的功能。
<?php
/** Plugin Name: (#70317) »kaiser« Fetch all child posts */
/**
* Calls the child pages
*
* @param object $query
* @return object $query
*/
function wpse70317_pre_get_posts( $query )
{
if (
! $query->is_home()
OR ! $query->is_front_page()
OR ! $query->is_main_query()
)
{
return $query;
}
$query->set( \'post_type\', \'page\' );
$query->set( \'post_status\', \'inherit\' );
// Allow the menu order (meta value) to be used
// ... and start with 0 and count up
$query->set( \'order\', \'ASC\' );
$query->set( \'orderby\', \'menu_order\' );
// Change this to your parent posts ID
$query->set( \'post_parent\', 1 );
return $query;
}
add_action( \'pre_get_posts\', \'wpse70317_pre_get_posts\' );