我希望有人可以帮我处理我的特定问题。
我目前正在处理一个问题/答案表单,该表单显示在名为' lp_lesson'的自定义帖子类型上。在Wordpress中。
我已成功创建了一个位于Wordpress管理端的问题表单。您可以生成多个问题字段,并将其动态保存到SQL数据库中。 这些问题在post_meta中保存为数组。
在网站的前端,对于特定的自定义帖子类型,它将显示问题字段,并且在每个问题字段下方将具有textarea字段,供用户输入他们对该特定问题的答案。 答案将保存为user_meta中的数组。
所有表单并成功提交到数据库。
BUT
提交表单并离开页面后,一旦您返回,它将删除曾在那里提交的所有数据。
我怀疑可能是因为我在表单之前有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 :(得分:0)
首先使用functions.php
中的以下功能检查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']) );
}
它将在用户中显示活动 - &gt; wp管理面板中的个人资料
如果显示更新未删除