How to force forms only through your own submit functions? If I want a custom submit handler, the usual answer is to add the function call to $form['#submit'], and if need be, $form['actions']['submit']['#submit']. The standard warning is do something like 

$form['#submit'][]='my_handler';


instead of 

$form['#submit']='my_handler';


because you generally want the form submission to still go through the core form submission handlers. 

I have a case where I need to completely manage the form submission process and don't ever want the form to be passed to the core submission handlers. To test that I could do this, I have:

global $user;   
module_load_include('inc', 'node', 'node.pages');
$node_form = new stdClass;
$node_form-&gt;type = 'my_content_type';
$node_form-&gt;uid = $user-&gt;uid;
$node_form-&gt;name = (isset($user-&gt;name) ? $user-&gt;name : '');
$form = drupal_get_form('my_content_type_node_form', $node_form);
$form['#submit']='';
$form['actions']['submit']['#submit']='';
$render($form);


I would have thought that since there are no submission handlers, the form shouldn't submit, or even if the page reloaded due to the action attribute in the html form element, that the content wouldn't be added to the database. 

But it is.

So how can I keep Drupal from processing a submission through the normal core submission handlers, but still process through custom handlers? (I already know how to write custom form submission handlers, so that's not part of this question.)
Since I suggested this in my comment (the first in the thread) I'll rephrase as an answer so that you can mark it as correct.

Rather than using drupal_get_form() to build the node edit form (which just doesn't work the way you tried to do it, as there is no such callback my_content_type_node_form as far as I know) and then modifying the $form array, my suggestion is to:


Let Drupal build your node edit form (you can do this by calling the appropriate URL /node/8/edit or /node/add/[type])
Then use the widely documented way of altering a form by implementing
hook_form_alter.


EDIT: Digging a bit more I did find a hook_form function callback for nodes, but it's standard for all nodes - it's implemented in the node.module as node_content_form(). The hook is invoked in node_form() but as far as I can tell (I did some trials) it's the same for all Content Types regardless of their machine name. I think this may be where the confusion started.