protected function get_post_preview_id($query)
{
$can = array('edit_' . $query->queried_object->post_type . 's');
if ($query->queried_object->author_id !== get_current_user_id()) {
$can[] = 'edit_others_' . $query->queried_object->post_type . 's';
}
$can_preview = array();
foreach ($can as $type) {
if (current_user_can($type)) {
$can_preview[] = true;
}
}
if (count($can_preview) !== count($can)) {
return;
}
$revisions = wp_get_post_revisions($query->queried_object_id);
if (!empty($revisions)) {
$revision = reset($revisions);
return $revision->ID;
}
return false;
}