WordPress at a glance
function is not described

WP_REST_Comments_Controller::check_read_post_permission() protected WP 4.7.0

Checks if the post can be read.

Correctly handles posts with the inherit status.

{} It's a method of the class: WP_REST_Comments_Controller{}

No Hooks.

Return

true/false. Whether post can be read.

Usage

// protected - for code of main (parent) or child class
$result = $this->check_read_post_permission( $post, $request );
$post(WP_Post) (required)
Post object.
$request(WP_REST_Request) (required)
Request data to check.

Changelog

Since 4.7.0 Introduced.

Code of WP_REST_Comments_Controller::check_read_post_permission() WP 5.5.1

<?php
protected function check_read_post_permission( $post, $request ) {
	$post_type = get_post_type_object( $post->post_type );

	// Return false if custom post type doesn't exist
	if ( ! $post_type ) {
		return false;
	}

	$posts_controller = $post_type->get_rest_controller();

	// Ensure the posts controller is specifically a WP_REST_Posts_Controller instance
	// before using methods specific to that controller.
	if ( ! $posts_controller instanceof WP_REST_Posts_Controller ) {
		$posts_controller = new WP_REST_Posts_Controller( $post->post_type );
	}

	$has_password_filter = false;

	// Only check password if a specific post was queried for or a single comment
	$requested_post    = ! empty( $request['post'] ) && ( ! is_array( $request['post'] ) || 1 === count( $request['post'] ) );
	$requested_comment = ! empty( $request['id'] );
	if ( ( $requested_post || $requested_comment ) && $posts_controller->can_access_password_content( $post, $request ) ) {
		add_filter( 'post_password_required', '__return_false' );

		$has_password_filter = true;
	}

	if ( post_password_required( $post ) ) {
		$result = current_user_can( 'edit_post', $post->ID );
	} else {
		$result = $posts_controller->check_read_permission( $post );
	}

	if ( $has_password_filter ) {
		remove_filter( 'post_password_required', '__return_false' );
	}

	return $result;
}