Only create taxonomy terms on node approval? Right now nodes on my site are unpublished by default because I want to manually approve user submitted content. How can I make it so that user submitted taxonomy terms are not created until I manually approve the corresponding node?
As far as I can see, this would require a custom module. You would have to do something like this (tailor to your needs; I don't know if you're using publishing status to represent approval status).

    &lt;?php
      function mymodule_nodeapi(&amp;$node, $op, $a3 = NULL, $a4 = NULL) {
        switch ($op) {
          case 'presave':
            if (!empty($node-&gt;taxonomy) &amp;&amp; $node-&gt;status == 0) {
              // Write some logic to save the data to your module's DB table, e.g.
              // _mymodule_get_taxonomy_temp() would contain a database query or
              // something to get the record.
              $record = _mymodule_get_taxonomy_temp($node-&gt;nid);
              $record_exists = !empty($record);
              $taxonomy_temp = ($record ? $record : new stdClass());
              $taxonomy_temp-&gt;taxonomy = $node-&gt;taxonomy;
              $taxonomy_temp-&gt;nid = $node-&gt;nid;
              if ($record_exists === FALSE) {
                drupal_write_record('mymodule_taxonomy_temp', $taxonomy_temp),
              }
              else {
                drupal_write_record('mymodule_taxonomy_temp', $taxonomy_temp, 'nid'),
              }
              unset($node-&gt;taxonomy);
            }
            elseif (!empty($node-&gt;taxonomy_temp &amp;&amp; $node-&gt;status == 1)) {
              // Retrieve the saved taxonomy and put it back into the node.
              $record = _mymodule_get_taxonomy_temp($node-&gt;nid);
              // We append it to any changes made during the approval process.
              $node-&gt;taxonomy = array_merge($node-&gt;taxonomy, $record-&gt;taxonomy);
              // Clean up the database record
              _mymodule_delete_taxonomy_temp($node-&gt;nid);
            }
            break;
        }
      }
    ?&gt;


Note that this is strictly sample code. You might want to retrieve the terms using hook_form_alter instead and show them in the tags box as if they had been added. In any case, the key is not to have them in $node when taxonomy_nodeapi() runs and saves them.