WPCOM_JSON_API_Endpoint::user_can_view_post PHP Méthode

user_can_view_post() public méthode

public user_can_view_post ( $post_id )
    function user_can_view_post($post_id)
    {
        $post = get_post($post_id);
        if (!$post || is_wp_error($post)) {
            return false;
        }
        if ('inherit' === $post->post_status) {
            $parent_post = get_post($post->post_parent);
            $post_status_obj = get_post_status_object($parent_post->post_status);
        } else {
            $post_status_obj = get_post_status_object($post->post_status);
        }
        if (!$post_status_obj->public) {
            if (is_user_logged_in()) {
                if ($post_status_obj->protected) {
                    if (!current_user_can('edit_post', $post->ID)) {
                        return new WP_Error('unauthorized', 'User cannot view post', 403);
                    }
                } elseif ($post_status_obj->private) {
                    if (!current_user_can('read_post', $post->ID)) {
                        return new WP_Error('unauthorized', 'User cannot view post', 403);
                    }
                } elseif ('trash' === $post->post_status) {
                    if (!current_user_can('edit_post', $post->ID)) {
                        return new WP_Error('unauthorized', 'User cannot view post', 403);
                    }
                } elseif ('auto-draft' === $post->post_status) {
                    //allow auto-drafts
                } else {
                    return new WP_Error('unauthorized', 'User cannot view post', 403);
                }
            } else {
                return new WP_Error('unauthorized', 'User cannot view post', 403);
            }
        }
        if (-1 == get_option('blog_public') && !apply_filters('wpcom_json_api_user_can_view_post', current_user_can('read_post', $post->ID), $post)) {
            return new WP_Error('unauthorized', 'User cannot view post', array('status_code' => 403, 'error' => 'private_blog'));
        }
        if (strlen($post->post_password) && !current_user_can('edit_post', $post->ID)) {
            return new WP_Error('unauthorized', 'User cannot view password protected post', array('status_code' => 403, 'error' => 'password_protected'));
        }
        return true;
    }