我正在尝试创建自己的第一个插件,但我是新手,所以请指导我正确的方向。
此插件用于根据用户的角色设置过期后的日期。现在我陷入了保存数据的阶段。
因为我不想为输入创建新的数据库表。我使用设置api来完成这项工作,并将数据保存在wp\\U选项表中。
在我的插件设置页面中,我希望用户能够添加/编辑/删除规则。每个规则由用户定义,并有多个输入。
要添加规则,用户需要选择角色、post\\u类型、过期的\\u操作和天数限制。我想把这些输入存储在一个数组中,我该怎么做?
例如:
array(1) {
role => "" // get from the form input
post_type => "" // get from the form input
expired_action => "" // get from the form input
day_limti => "" // get from the form input
}
array(2) {
role => ""
post_type => ""
expired_action => ""
day_limti => ""
}
array(3) {
role => ""
post_type => ""
expired_action => ""
day_limti => ""
}
......etc
如何使用输入名称my html表单,以便在用户每次提交规则时将其保存在数组中?
这是我在插件选项页面中的html表单,用于添加规则:
<form action="options.php" id="apext_form" method="post" name="author_limit">
<?php settings_fields(\'apext_Options\'); ?>
<table class="form-table">
<tbody>
<tr valign="top">
<td>
<label for="apext_user_role"><?php _e(\'User Role\', \'apext\') ?></label>
<select name="role" id="apext_role_id">
<option></option>
<?php global $wp_roles; if ( !isset( $wp_roles ) ) $wp_roles = new WP_Roles();
foreach ( $wp_roles->role_names as $role => $name ) { ?>
<option value="<?php echo $name; ?>"><?php echo $name; ?></option>
<?php }
?>
</select><br>
</td>
<td>
<label for="apext_post_type"><?php _e(\'Post Type\', \'apext\') ?></label>
<select name="apext_pt" id="apext_pt_id">
<?php $post_types=get_post_types(\'\',\'names\');
foreach ($post_types as $post_type ) {
?>
<option value="<?php echo $post_type;?>"><?php echo $post_type;?></option>
<?php }
?>
</select><br/>
</td>
<td><label for="Expired Action"><?php _e(\'Expired Action\'); ?></label>
<select name="remove_to" id="re_to"><option value =\'\'></option>
<option value="pending">pending</option>
<option value="draft">draft</option>
<option value="trash">trash</option>
<option value="delete">delete</option>
</td>
<td>
<label for="apext_post_limit"><?php _e(\'Days Limit\', \'apext\') ?></label>
<input type="text" id="apext_lim" name="apext_lim" id="lim" size="4" value="<?php echo get_option(\'apext_lim\');?>"/><br>
</td>
<td><input class="button-primary" type="submit" name="Submit" value="<?php _e("Submit Rule", \'apext\') ?>" /></td>
</tr>
</tbody>
</table>
</form>
我知道表单不工作,因为它没有来自register\\u设置的引用名称。它只是帮助你理解我在做什么。
同样,我的问题是:如何将这些输入值保存在数组中?
最合适的回答,由SO网友:MathSmath 整理而成
这是我喜欢处理表单输入集合的方式。详细说明见备注。
if( isset( $_POST ) ) {
// Create an empty array. This is the one we\'ll eventually store.
$arr_store_me = array();
// Create a "whitelist" of posted values (field names) you\'d like in your array.
// The $_POST array may contain all kinds of junk you don\'t want to store in
// your option, so this helps sort that out.
// Note that these should be the names of the fields in your form.
$arr_inputs = array(\'input_1\', \'input_2\', \'input_3\', \'etc\');
// Loop through the $_POST array, and look for items that match our whitelist
foreach( $_POST as $key => $value ) {
// If this $_POST key is in our whitelist, add it to the arr_store_me array
if( in_array( $key, $arr_inputs) )
$arr_store_me[$key] = $value;
}
// Now we have a final array we can store (or use however you want)!
// Update option accepts arrays--no need
// to do any other formatting here. The values will be automatically serialized.
update_option(\'option_name\', $arr_store_me)
}
这只是一种通用方法。您可以通过为字段创建一个默认值数组,并使用
wp_parse_args(). 如果您将此与
extract($arr_store_me), 这是一种很好的预填充表单字段的方法,同时避免了未设置变量的警告。