No início de wp_insert_post
, a função que salva / atualiza uma postagem, há uma filtro chamado wp_insert_post_empty_content
. Por padrão, este filtro verifica se os campos de título, editor e trecho estão vazios, caso em que o processo de salvamento será interrompido.
No entanto, como todos os campos a serem salvos são passados para esse filtro, você pode expandir esse filtro para incluir qualquer outro teste para determinar se a postagem deve ser considerada vazia. Seria algo assim:
add_filter ('wp_insert_post_empty_content','wpse312975_check_unique_url',10,2);
function wpse312975_check_unique_url ($maybe_empty, $postarr) {
// extract custom field from $postarr, check uniqueness
if ($unique) return false else return true;
}
Nota: a função deve retornar 'true' para interromper o processo de salvamento.
Se o campo personalizado não for exclusivo, você também poderá repetir um aviso.