Sorry about that feels a bit weird answering ones own question, but here you go….
Firstly declare the variable: (customcategory)
global $userdata;
$errors = array();
$title = trim($_POST['wpuf_post_title']);
$customcategory = trim($_POST['customcategory']);
$content = trim($_POST['wpuf_post_content']);
$tags = wpuf_clean_tags($_POST['wpuf_post_tags']);
$cat = trim($_POST['cat']);
Secondly the array for adding the post:
if (!$errors) {
$frontend_post = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => $post_status,
'post_author' => $userdata->ID,
'post_category' => array($_POST['cat']),
'post_type' => $customcategory,
'tags_input' => $tags
);
$post_id = wp_insert_post($frontend_post);
and finally create the dropdrown from the get_post_types function:
<?php
$args=array(
'public' => true,
'_builtin' => false
);
$output="names";
$operator="and";
$post_types=get_post_types($args,$output,$operator);
echo '<select name="customcategory">';
foreach ($post_types as $post_type ) {
echo '<option value="'. $post_type.'">'. $post_type. '</option>';
}echo '</select>';
?>