您的代码中存在一些问题,例如:。$pages
将始终返回一个数组,即使没有返回空数组的结果,所以if ( is_page() && $pages ) return true;
不一定意味着<我们在the 第页或子页;。相反,它的意思是“我的朋友,我的朋友”;只要是一个页面(帖子类型page
), 然后返回true;。
尽管如此,请尝试以下方法,即使所讨论的页面有一个子页面也可以:
// This function checks whether the current Page has the specified ID ($pid), or
// that the current Page is a direct or indirect child of $pid.
function is_tree( $pid ) {
// ID of the specific child page that you want to exclude.
$cid = 4419;
// Bail early if we\'re not on a Page.
if ( ! is_page() ) {
return false;
}
$page_id = get_queried_object_id();
$pid = (int) $pid;
// We\'re on the parent page.
if ( $pid === $page_id ) {
return true;
}
// We\'re on the **excluded child page**, so return false.
if ( (int) $cid === $page_id ) {
return false;
}
$pages = get_pages( array( \'child_of\' => $pid ) );
// Check if we\'re on one of the other child pages.
return in_array( $page_id, wp_list_pluck( $pages, \'ID\' ) );
}