我有一个自定义插件,我正在尝试编辑。我没有开发插件。我只需要添加一个文本区域并保存内容。我添加了字段,但无法保存。这只是需要在后台的管理。除此页面外,此字段在任何位置都不可见。
这是我的代码:
<form method="post">
<table class="widefat">
<thead>
<tr>
<th style="width: 15%;">CHEF Account Info</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<th><label><?php echo _e( \'Status\', \'chef\' ); ?></label></th>
<td>
<input type="text" readonly="" onfocus="this.select()" value="<?php echo $chef_config->get_chef_status_title( $user->chef_status ); ?>" class="regular-text">
<?php if ( $user->chef_status == \'rejected\' ): ?>
<br><br><textarea name="chef_status_rejection_notes" readonly="" onfocus="this.select()" class="um-forms-field um-long-field" rows="6"><?php echo $user->chef_status_rejection_notes; ?></textarea>
<?php endif; ?>
</td>
</tr>
<tr>
<th><label><?php echo _e( \'User Role\', \'chef\' ); ?></label></th>
<td><input type="text" readonly="" onfocus="this.select()" value="<?php echo $chef_config->get_chef_role_title( $user->roles[0] ); ?>" class="regular-text"></td>
</tr>
<tr>
<th><label><?php echo _e( \'Experience Level\', \'chef\' ); ?></label></th>
<td><input type="text" readonly="" onfocus="this.select()" value="<?php echo $user->chef_experience_level; ?>" class="regular-text"></td>
</tr>
<tr>
<th><label><?php echo _e( \'Registered\', \'chef\' ); ?></label></th>
<td><input type="text" readonly="" onfocus="this.select()" value="<?php echo date_format( date_create( $user->user_registered ), "F j\\, Y @ h:i:s A" ); ?>" class="regular-text"></td>
</tr>
<tr>
<th><label><?php echo _e( \'Resources Access\', \'chef\' ); ?></label></th>
<td>
<?php
$terms = get_terms(\'resource_category\');
$chef_profile_resources_access = $user->chef_profile_resources_access;
if ( empty( $chef_profile_resources_access ) ) {
$chef_profile_resources_access = [];
}
?>
<?php $terms = get_terms(\'resource_category\'); ?>
<select name="chef_profile_resources_access[]" multiple>
<?php foreach ( $terms as $term ): ?>
<option value="<?php echo $term->term_id; ?>" <?php if ( in_array( $term->term_id, $chef_profile_resources_access ) ): echo \'selected\'; endif; ?>><?php echo $term->name; ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
<tr>
<th><label><?php echo _e( \'Reporting Form\', \'chef\' ); ?></label></th>
<td>
<?php
$form_pages = get_pages( [\'parent\' => 1520 ] );
$chef_profile_reporting_form = $user->chef_profile_reporting_form;
if ( empty( $chef_profile_reporting_form ) ) {
$chef_profile_reporting_form = \'\';
}
?>
<select name="chef_profile_reporting_form">
<option value="">None</option>
<?php foreach ( $form_pages as $page ): ?>
<option value="<?php echo $page->ID; ?>" <?php if ( $page->ID == $chef_profile_reporting_form ): echo \'selected\'; endif; ?>><?php echo $page->post_title; ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
<tr>
<th><label><?php echo _e( \'CHEF Notes\', \'chef\' ); ?></label></th>
<td><textarea id="chef_profile_notes" rows="5" onfocus="this.select()" value="<?php echo $user->chef_profile_notes; ?>" class="regular-text" /> </textarea></td>
</tr>
</tbody>
</table>
<div class="user-approve-reject-actions">
<input type="hidden" name="action" value="user_permissions" />
<button class="button button-primary">Save changes</button>
</div>
</form>
我的文本区域位于底部。我需要做什么才能保存它?
最合适的回答,由SO网友:Sally CJ 整理而成
你的textarea
需要有一个适当的name
以便浏览器将其发送到服务器进行处理,例如保存到数据库。
其次textarea
字段没有value
他们还需要一个结束标记</textarea>
因为textarea
是多行表单字段。
因此,正确的格式是:
<textarea name="chef_profile_notes" id="chef_profile_notes" ...other attributes...>
<?php echo esc_textarea( $user->chef_profile_notes ): ?><!-- the field value -->
</textarea>
你可以看到我也使用
esc_textarea()
这是为了保护发送/显示给用户的输出。看见
Data Validation 了解更多详细信息。