WordPress Version: 6.1
/**
* Checks lock status for posts displayed on the Posts screen.
*
* @since 3.6.0
*
* @param array $response The Heartbeat response.
* @param array $data The $_POST data sent.
* @param string $screen_id The screen ID.
* @return array The Heartbeat response.
*/
function wp_check_locked_posts($response, $data, $screen_id)
{
$checked = array();
if (array_key_exists('wp-check-locked-posts', $data) && is_array($data['wp-check-locked-posts'])) {
foreach ($data['wp-check-locked-posts'] as $key) {
$post_id = absint(substr($key, 5));
if (!$post_id) {
continue;
}
$user_id = wp_check_post_lock($post_id);
if ($user_id) {
$user = get_userdata($user_id);
if ($user && current_user_can('edit_post', $post_id)) {
$send = array(
'name' => $user->display_name,
/* translators: %s: User's display name. */
'text' => sprintf(__('%s is currently editing'), $user->display_name),
);
if (get_option('show_avatars')) {
$send['avatar_src'] = get_avatar_url($user->ID, array('size' => 18));
$send['avatar_src_2x'] = get_avatar_url($user->ID, array('size' => 36));
}
$checked[$key] = $send;
}
}
}
}
if (!empty($checked)) {
$response['wp-check-locked-posts'] = $checked;
}
return $response;
}