Пока вижу два варианта.
- Каким-то образом получать список всех пользователей с указанным значением поля.
- Напрямую делать запрос к БД, обычный MySQL-запрос.
Но как реализовать первое не понятно. А второе немного смущает, не люблю в код напрямую запросы вставлять. Но зато понятно, понятно, как этот запрос написать.
На очень скорую руку, в сыром варианте, основываясь на примере Джастина Тедлока, меняем код функции my_save_extra_profile_fields()
function my_save_extra_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) )
return false;
$users = get_users();
foreach( $users as $user ) {
$twitter_user_meta[] = get_the_author_meta( 'twitter', $user->ID )
}
if( !in_array( $_POST['twitter'], $twitter_user_meta ) )
update_usermeta( $user_id, 'twitter', $_POST['twitter'] );
}
Этот код просто не обновит поле, если значение уже занято.
Далее начинаются детали, например выводить ли пользователю сообщение (создание WP_Error), что значение занято и т.д. (может оказаться много всего)
Да, примерно так и сделала. Только вместо устаревшей функции использовала актуальную. Ну, и плюс к этому проверки на соответствие шаблону и всякие такие приятные мелочи.
Спасибо вам за наводку!