You can capture the form submission by creating a small plugin / or by editing your theme functions file, and you can do this using a ajax hook. In the plugin you would load this on the edit post page:
jQuery(document).ready(function(){
jQuery('#post').submit(function(){
var request = jQuery(this).serializeArray();
request.push({name: 'action', value: 'check_some_stuff'});
jQuery.post(ajaxurl, request, function(response){
if(response.error){
response = jQuery.parseJSON(response);
jQuery('#local-storage-notice').after('<div class="error">'+response.error+'</div>');
});
return false;
} else {
return true;
}
});
});
When you return false, it will stop the form from submission.
The ajax will call a function check_some_stuff. The request
gets send as $_POST. You can then validate server side all you want:
add_action( 'wp_ajax_check_some_stuff', 'check_some_stuff' );
public function check_some_stuff()
{
//validate some stuff here
$valid = false;
if($valid){
$results = array('msg'=>'You win');
print json_encode($results);
} else {
$results = array('error'=>'<pre>'+print_r($_POST, true)+'</pre>');
print json_encode($results);
}
die();
}
I can go in more detail on how to add the javascript in if you need.