Drupal 6: Programmatically create any node type using drupal_execute
Here are some tips on how to create a node programmatically in a Drupal module. The safest way to create a node is to use the drupal_execute() function which simulates the submission of a form. This function accepts a variable number of arguments: 1) $form_id; 2) $form_state; and 3) any additional arguments. When creating a new node, the 3rd argument should be a $node object.
The $form_id should be formatted: NODETYPE_node_form. To confirm this, you could use hook_form_alter to show the form IDs for the current page (NOTE: you’ll have to be on node/add/NODETYPE to display the node form ID).
For the second argument, you’ll have to create an array that contains $form_state values (the data submitted from the node/add/NODETYPE form). Here is a basic $form_state array:
If you are creating a more complex node type, you’ll want to include more information in in the $form_state[‘values’] array. I find it helpful to view the submitted node form data using the following code:
Now, if you create a test node (node/add/NODETYPE), you’ll see the data that’s being submitted from the form. NOTE: be sure to remove these two functions when you are familiar with the structure of the $form_state variable.
The 3rd argument will be a (mostly) empty $node object containing the node type:
Here’s a code snippet that shows all the pieces together: