Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have learned how to create a post from the frontend but how about editing it ? This is the code I am trying to create a simple frontend form for posting.

Thank you

share|improve this question

2 Answers 2

up vote 2 down vote accepted

Just like the example you linked, but instead of using wp_insert_post() you use: wp_update_post() so your form becomes:

<?php
$post_to_edit = get_post($post_id); 
?>

<!-- edit Post Form -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<p><label for="title">Title</label><br />
<input type="text" id="title" value="<?php echo $post_to_edit->post_title; ?>" tabindex="1" size="20" name="title" />
</p>
<p><label for="description">Description</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"><?php echo $post_to_edit->content; ?></textarea>
</p>
<p><?php 
$cat = wp_get_post_terms( $post_to_edit->ID, 'category');
wp_dropdown_categories( 'show_option_none=Category&tab_index=4&taxonomy=categoryselected='.$cat[0]->term_id); ?></p>
<p><label for="post_tags">Tags</label>
<input type="text" value="<?php the_terms( $post_to_edit->ID, 'post_tag', '', ', ', '' ); ?>" tabindex="5" size="16" name="post_tags" id="post_tags" /></p>
<p align="right"><input type="submit" value="Publish" tabindex="6" id="submit" name="submit" /></p>
<input type="hidden" name="action" value="f_edit_post" />
<input type="hidden" name="pid" value="<?php echo $post_to_edit->ID; ?>" />
<?php wp_nonce_field( 'new-post' ); ?>
</form>
</div>

<!--// edit Post Form -->

and the processing becomes:

if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) &&  $_POST['action'] == "f_edit_post" && isset($_POST['pid'])) {
    //get the old post:
    $post_to_edit = get_post((int)$_POST['pid']); 

    //do you validation
    //...
    //...


    // Add the content of the form to $post_to_edit array
    $post_to_edit['post_title'] = $_post['title']
    $post_to_edit['post_content'] = $_post['description']
    $post_to_edit['tags_input'] = array($_post['post_tags'])


    //save the edited post and return its ID
    $pid = wp_update_post($post_to_edit); 


    //set new category
    wp_set_post_terms($pid,(array)($_POST['cat']),'category',true);

}

now this has no validation so i leave it up to you.

share|improve this answer

Scribu Front End Editor havent tried it personally but i have read good stuff about it

share|improve this answer
    
Thanks I will take a look at it, it seems interesting, but I am searching for a simple source code so I will have the power of coding. –  Punkis May 16 '11 at 15:00
    
@punkis - take a look at the plugin source code if you want to learn how to do it. –  anu May 16 '11 at 15:03

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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