Các chức năng hữu ích để kiểm tra các Trang và các Trang phụ của chúng trong WordPress

Để kiểm tra một Trang theo ID cho Trang đó hoặc các trang con trực tiếp của nó (trang con / trang con)

// To check a Page by ID for that Page or its direct descendants (sub/child pages)
function is_tree( $pid ) { // $pid = The ID of the page we're looking for pages underneath

	global $post; // load details about this page

	if( is_page() && ( $post->post_parent == $pid || is_page( $pid ) ) )
		return true; // we're at the page or at a sub page
	else
		return false; // we're elsewhere

}

Sử dụng: if ( is_tree( 645 ) ) {}

hoặc để kiểm tra bằng ID hoặc slug hoặc tiêu đề:

/**
*   Child page conditional
*   @ Accept's page ID, page slug or page title as parameters
*/
function is_child( $parent = '' ) {
	global $post;

	$parent_obj = get_page( $post->post_parent, ARRAY_A );
	$parent = (string) $parent;
	$parent_array = (array) $parent;

	if ( in_array( (string) $parent_obj['ID'], $parent_array ) ) {
		return true;
	} elseif ( in_array( (string) $parent_obj['post_title'], $parent_array ) ) {
		return true;
	} elseif ( in_array( (string) $parent_obj['post_name'], $parent_array ) ) {
		return true;
	} else {
		return false;
	}
}

Sử dụng:

if ( is_child( 645 ) ) {} hoặc hoặc if ( is_child( 'Services' ) ) {} if ( is_child( 'our-services' ) ) {}

Để kiểm tra một Trang theo ID cho Trang đó hoặc bất kỳ / tất cả các trang con của nó (bao gồm cả cháu)

// To check a Page by ID and all its child Pages incl. grand children
function is_tree( $pid ) { // $pid = The ID of the page we're looking for pages underneath

	global $post; // load details about this page

	$anc = get_post_ancestors( $post->ID );

	foreach( $anc as $ancestor ) {
		if ( is_page() && $ancestor == $pid ) {
			return true;
		}
	}

	if ( is_page() && ( is_page ( $pid ) ) ) {
		return true; // we're at the page or at a sub page
	}
	else {
	   return false; // we're elsewhere
	}

}

Để kiểm tra một Trang theo ID nếu nó là tổ tiên

function is_ancestor( $post_id ) {

	global $wp_query;

	$ancestors = $wp_query->post->ancestors;

	if ( in_array( $post_id, $ancestors ) ) {
		$return = true;
	} else {
		$return = false;
	}
	
	return $return;
}