2015-09-02 87 views
4

所以,我有以下的代碼,讓前臺編輯的WordPress從這裏取:https://wordpress.stackexchange.com/questions/9912/front-end-post-editing-using-a-form編輯後用更新

<?php 
    if ('POST' == $_SERVER['REQUEST_METHOD'] && ! empty($_POST['post_id']) && ! empty($_POST['post_title']) && isset($_POST['update_post_nonce']) && isset($_POST['postcontent'])) 
    { 
    $post_id = $_POST['post_id']; 
    $post_type = get_post_type($post_id); 
    $capability = ('page' == $post_type) ? 'edit_page' : 'edit_post'; 
    if (current_user_can($capability, $post_id) && wp_verify_nonce($_POST['update_post_nonce'], 'update_post_'. $post_id)) 
    { 
     $post = array(
     'ID'    => esc_sql($post_id), 
     'post_content' => esc_sql($_POST['postcontent']), 
     'post_title'  => esc_sql($_POST['post_title']) 
    ); 
     wp_update_post($post); 

     if (isset($_POST['edit_test'])) update_post_meta($post_id, 'edit_test', esc_sql($_POST['edit_test'])); 
     if (isset($_POST['edit_test2'])) update_post_meta($post_id, 'edit_test2', esc_sql($_POST['edit_test2'])); 
         } 
         else 
         { 
          wp_die("You can't do that"); 
         } 
        } 
       ?> 

    <form class="royal_page" role="form" method="post">     
     <input type="hidden" name="post_id" value="<?php the_ID(); ?>" /> 
     <?php wp_nonce_field('update_post_'. get_the_ID(), 'update_post_nonce'); ?> 

     <p><label for="post_title">Title</label> 
     <input type="text" id="post_title" name="post_title" value="<?php echo $post->post_title; ?>" /></p> 

     <p><?php wp_editor($post->post_content, 'postcontent'); ?></p> 

     <p><label for="post_title">Test</label> 
     <?php $value = get_post_meta(get_the_ID(), 'edit_test', true); ?> 
     <input type="text" id="edit_test" name="edit_test" value="<?php echo $value; ?>" /></p> 

     <p><label for="post_title">Test 2</label> 
     <?php $value = get_post_meta(get_the_ID(), 'edit_test2', true); ?> 
     <input type="text" id="edit_test2" name="edit_test2" value="<?php echo $value; ?>" /></p> 

    <input type="submit" id="submit" value="Update" />   
    </form>  

所以,編輯職位本身的工作就好了。一旦提交編輯,然後刷新頁面。

我看到刷新後所做的更改。但是,編輯表單不再包含內容,我必須再次刷新頁面才能看到它(請參閱下面的圖像)。

enter image description here

有誰知道爲什麼會那樣做,如果有要如何解決它的任何解決方案?

謝謝!

回答

1

您需要刷新頁面以獲得更新的信息,可能是由於以下原因的原因:

你的代碼流可能是這樣的: 1.您已經崗位條件的頂部:<?php if(have_posts()): while(have_posts()): the_post(); ?>

  • 那麼你形式處理代碼:if ('POST' == $_SERVER['REQUEST_METHOD'] && ! empty($_POST['post_id']) && ! empty($_POST['post_title']) && isset($_POST['update_post_nonce']) && isset($_POST['postcontent'])) ...

  • 那麼你形式。


  • 改變流動到這可能有助於:在頂部 1.將表單處理代碼:if ('POST' == $_SERVER['REQUEST_METHOD'] && ! empty($_POST['post_id']) && ! empty($_POST['post_title']) && isset($_POST['update_post_nonce']) && isset($_POST['postcontent'])) ...

  • 然後把交條件:<?php if(have_posts()): while(have_posts()): the_post(); ?>

  • 照常放置。