我正在努力获得我想要的结果。在谷歌上搜索了几个小时后,我决定向大家寻求帮助。
我试图查看当前(查询的)页面的子页面,如果该页面在特定分类中有特定的术语,则显示子页面内容,而不是最初查询的页面。因此,我有以下几点:
function site_child($pid) {
$site_term = io_multi_get_var(\'term\', null); //this is working properly from another function
$args = array(
\'child_of\' => $pid,
\'hierarchical\' => 0,
\'parent\' => $pid,
);
// http://codex.wordpress.org/Function_Reference/get_pages
$children = get_pages($args);
foreach ($children as $child) {
if ( has_term($site_term,\'site_assign\',$child) ) {
return $child->ID;
}
}
return false;
}
// modify the PAGE main query
add_action( \'pre_get_posts\', \'replace_content_with_child\' );
function replace_content_with_child( $query ) {
if( $query->is_main_query() && !is_admin() && is_page() ) {
if( $sitechild = site_child($query->query_vars[\'page_id\']) ) {
$query->query_vars[\'page_id\'] = $sitechild;
}
}
}
这种方法实际上在主页上非常有效。找到了“主页”的子页面,并更改查询以显示该页面。然而,例如,当我在/关于我们/任务/上尝试时,我没有得到任何结果(即使有一个子页面符合条件)。如果我在“主页”上var\\u dump($children),我会得到一个结果:正确的结果。如果我在另一个页面上var\\u dump($子页面),我只会得到所有顶级页面的数组(没有任何子页面)。我做错了什么?我在没有“parent”参数和“child\\u of”参数的情况下尝试了此操作。我不知道是否只是没有找到正确的参数组合,或者在我尝试的过程中是否存在根本性的缺陷。。。
任何帮助都将不胜感激。
编辑:如果我在主页以外的任何页面上转储var\\u($pid),我将收到“int(0)”。我想这是问题的根源。关于$query->query_vars[\'page_id\']
未生成当前页的实际ID。