Eu finalmente consegui o comportamento necessário, acabei usando o código atualizado do exemplo que mostrei na minha pergunta - e, na verdade, mais perto do código sugerido na pergunta que referi no texto da minha pergunta! Aqui está o código que funcionou no final:
function allow_user_to_edit_cpt_filter($allcaps, $cap, $args) {
global $current_user; // Get user id
get_currentuserinfo(); //...
$userid = $current_user->ID; //...
$a_user = new WP_User($userid); // Get user details
if ($a_user->roles[0] != 'administrator') { // Don't apply if administrator
$wos_uspr_checked_edit_ids = explode(',',esc_attr(get_the_author_meta('wos_uspr_edit_data', $userid)));
global $wpdb;
$post = get_post($args[2]);
// UPDATED CODE BLOCK BEGINS
if (!in_array($post->ID, $wos_uspr_checked_edit_ids)) {
if (($args[0] == "edit_project") || ($args[0] == "edit_others_projects") || ($args[0] == "edit_published_projects")) {
foreach((array) $cap as $capasuppr) {
if (array_key_exists($capasuppr, $allcaps)) {
$allcaps[$capasuppr] = 0;
}
}
}
}
// UPDATED CODE BLOCK ENDS
}
return $allcaps;
}
add_filter('user_has_cap', 'allow_user_to_edit_cpt_filter', 100, 3);
O uso desse código, em vez do que citei na minha pergunta, parece ser acionado corretamente no carregamento da primeira página, e meu conteúdo está restrito à exibição na primeira vez. Tenho certeza que tentei este formato antes e não tive sucesso, mas agora está funcionando como desejado.