The code you posted seems a bit frail at places, but if it works for you, we can focus on your specific question.

The main problem is that you are not adding the $menu array to your node object before saving it. You would only need to add it to the object before you save it, similar to this:

    $node->menu = $menu;
    ...
    node_save($node);

Cheers and good luck!

P.S.: You can check out this thread for some code examples [https://stackoverflow.com/q/2603289/5875098][1]
P.S.2: To get all the terms directly from the $node object:

    $terms = array();
    $language = 'und'; // or will be provided by some Drupal hooks
    foreach ($node->field_tags[$language] as $delta => $value) {
      $termObj = taxonomy_term_load($value['tid']);
      $terms[] = $termObj->name;
    }

You can replace the $terms = explode... in your code with this snippet.


  [1]: https://stackoverflow.com/q/2603289/5875098