I want to submit custom post from frontend. i have made form to make this happened. But i want to upload featured image form add media button of wordpress.

Code is

Template Name: post submition Template

Description: Use this page template to hide the sidebar. Alternatively
you can simply remove all widgets from your sidebar to hide it on
all pages.

<?php get_header(); ?>

// Check if the form was submitted
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] )) {

// Do some minor form validation to make sure there is content
if (isset ($_POST['title'])) { 
    $title =  $_POST['title']; 
} else { 
    echo 'Please enter a title';
if (isset ($_POST['description'])) { 
    $description = $_POST['description']; 
} else { 
    echo 'Please enter the content'; 

// Add the content of the form to $post as an array
$post = array(
    'post_title'    => $title,
    'post_content'  => $description,
    'post_category' => $_POST['cat'],  // Usable for custom taxonomies too
    'post_status'   => 'draft',         // Choose: publish, preview, future, etc.
    'post_type'     => 'contast'  // Use a custom post type if you want to
echo $pid = wp_insert_post($post);  // Pass  the value of $post to WordPress the insert function

    if ($_FILES) {
$i = 0;//this will count the posts
foreach ($_FILES as $file => $array) {
    if ($i == 0) $set_feature = 1; //if $i ==0 then we are dealing with the first post
    else $set_feature = 0; //if $i!=0 we are not dealing with the first post
    $newupload = insert_attachment($file,$pid, $set_feature);
    echo $i++; //count posts

//attachment helper function   

            // http://codex.wordpress.org/Function_Reference/wp_insert_post
    //wp_redirect( '/submit-2/' ); // redirect to home page after submit

} // end IF
// Do the wp_insert_post action to insert it

<form action="" method="post" enctype="multipart/form-data">
<p><label for="title">Titolo</label><br />
        <input type="text" id="title" value="" tabindex="1" size="20" name="title" />
        <p><label for="description">Testo</label><br />
        <textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>

<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<p align="right"><input type="submit" value="Invia" tabindex="6" id="submit" name="submit" /></p>

        <input type="hidden" name="post_type" id="post_type" value="domande" />
    <input type="hidden" name="action" value="post" />
    <?php wp_nonce_field( 'new-post' ); ?>

<?php get_footer(); ?>

and function is

function insert_attachment($file_handler,$post_id,$setthumb='false') {
if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK){ return __return_false(); 
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');

echo $attach_id = media_handle_upload( $file_handler, $post_id );
//set post thumbnail if setthumb is 1
if ($setthumb == 1) update_post_meta($post_id,'_thumbnail_id',$attach_id);
return $attach_id;
  • and what is the question?
    – matpol
    Commented Feb 13, 2014 at 10:39
  • I want to add featured image by using wordpress media.. like in backend instead of upload button
    – devjohn
    Commented Feb 13, 2014 at 11:55
  • via google: wordpress.org/plugins/frontend-uploader
    – matpol
    Commented Feb 13, 2014 at 12:28
  • I have checked this.. but bot usable to me. I want to set featured image just like backend functionality in frontend
    – devjohn
    Commented Feb 13, 2014 at 12:36

1 Answer 1


add below code after echo $attach_id....

set_post_thumbnail( $post_id , $attach_id);
  • it works like a charm!
    – frabiacca
    Commented Oct 6, 2014 at 17:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.