2017-07-03 5 views
-1

私の特定の問題に助けてくれる人がいることを願っています。Wordpress PHPフォーム - ページを去るときにデータが削除される

私は現在Wordpress内で 'lp_lesson'というカスタム投稿タイプに表示される質問/回答フォームに取り組んでいます。

私は正常にWordpressの管理者側にある質問フォームを作成しました。複数の質問フィールドを生成し、それをSQLデータベースに動的に保存することができます。 質問はpost_metaの配列として保存されます。

ウェブサイトのフロントエンドでは、特定のカスタム投稿タイプの場合、質問フィールドが表示され、各質問フィールドの下には、ユーザーがその特定の質問に対する回答を入力するためのテキストエリアがあります。 答えはuser_metaに配列として保存されます。

すべてのフォームが正常にデータベースに送信されます。

しかし

あなたが戻ると、フォームを送信してページを残した後、それはかつてそこに提出されたすべてのデータを削除します。

私はフォームの前にupdate_user_metaがあったと思われました。空のフォームデータを送信している可能性がありますが、フォームの後ろにupdate_user_metaを置いてみましたが、違いはありません。

下記の私の機能をご覧ください。

function activity_form_function() { 
    global $current_user; 

    $course   = LP()->global['course']; 
    $item  = LP()->global['course-item']; 
    $courseID = $course->ID; 
    $itemID  = $item->ID; 

    $lp_lesson_activity = get_post_meta($item->ID, 'activities', true); 

    if (!empty($lp_lesson_activity[0])) { 

     ?> 

     <div class="lp-lesson-activity"> 
      <h4>Activity</h4> 
      <form name="lessonactivity" action="" method="POST"> 
       <ul> 
        <?php 
        $c = 0; 
        foreach ($lp_lesson_activity as $activity) { 
        $activity_question_push = "AID" . $courseID . $itemID . $c++; 
        $assessment = $activity['assessment']; 

        $fieldname = 'activities_' . $itemID; 
        $activity_question_answer = $_POST['activities']; 
        update_user_meta($current_user->ID, $fieldname, $activity_question_answer); 
        $activity_question_answerGUD = get_user_meta($current_user->ID, $fieldname, true); 
        ?> 
         <li class="lp-activity-question"> 
          <span><?php echo $activity['title']; ?></span> 
          <div class="lp-activity-answer-container"> 
           <input type="hidden" name="activities[<?php echo $activity_question_push; ?>][question]" value=""> 
           <textarea placeholder="Enter answer here" name="activities[<?php echo $activity_question_push; ?>][answer]"><?php echo $activity_question_answerGUD[$activity_question_push]['answer']; ?></textarea> 
           <?php if ($assessment) { ?> 
            <span class="notice">This activity will be assessed and will contribute to your final grade. Please take your time.</span> 
           <?php } ?> 
          </div> 
         </li> 
        <?php } ?> 
       </ul> 
       <button type="submit">Save</button> 
      </form> 
     </div> 
    <?php } 

} 
+0

更新:これはupdate_user_metaと関係があります。私は、完全にupdate_user_metaを削除すると、問題が発生しなくなり、ページから離れてページに戻り、データがデータベースに残ることを意味することがわかりました。しかし、update_user_metaを削除すると、フィールドは更新されません。だから私は正方形に戻っています。 – user3686263

+0

私はまた、私の機能の全体を通常のポストタイプに移動しましたが、エラーは依然として発生します。 – user3686263

答えて

0

まずそのuser_post_metaが削除またはそれは、ユーザーのアクティビティが表示されます

add_action('show_user_profile', 'my_show_extra_profile_fields'); 
add_action('edit_user_profile', 'my_show_extra_profile_fields'); 

function my_show_extra_profile_fields($user) { 
global $current_user; 

    $course   = LP()->global['course']; 
    $item  = LP()->global['course-item']; 
    $courseID = $course->ID; 
    $itemID  = $item->ID; 

    $lp_lesson_activity = get_post_meta($item->ID, 'activities', true); 
$fieldname = 'activities_' . $itemID; ?> 
<h3>Extra profile information</h3> 

<table class="form-table"> 

    <tr> 
     <th><label for="twitter">activities No</label></th> 

     <td> 
      <input type="text" name="activities-no" id="activities-no" value="<?php echo esc_attr(get_user_meta($current_user->ID,'$fieldname',true)); ?>" class="regular-text" /><br /> 
      <span class="description">Please enter your activities No.</span> 
     </td> 
    </tr> 

</table> 
<?php } 

add_action('personal_options_update', 'my_save_extra_profile_fields'); 
add_action('edit_user_profile_update', 'my_save_extra_profile_fields'); 

function my_save_extra_profile_fields($user_id) { 

if (!current_user_can('edit_user', $user_id)) 
    return false; 


update_user_meta($current_user->ID, '$fieldname', sanitize_text_field($_POST['activities-no'])); 
} 

のfunctions.phpに機能の下に使用されていませんチェック - > WP管理者パネル内のプロファイルは

それがあることを示した場合更新は削除されません

+0

最初にそれを確認してください。それは私がいくつかの答えを与えることができることを意味します。 –

関連する問題