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; }