Hide publishing options in hook_form_alter without unpublishing node?
You could just convert the element to a value type, that way it will be hidden from the form display but will be passed through to the submit handler as normal:

$form['options']['status'] = array(
  '#type' =&gt; 'value',
  '#value' =&gt; 1
);


You can do the same thing for the rest of the elements in that fieldset, then set the fieldset itself to a container type and remove the title:

$form['options']['#type'] = 'container';
$form['options']['#title'] = '';