我是一个相对的初学者,所以任何能为我指明正确方向的东西都是值得赞赏的。
我正在尝试将管理面板中的选项列入白名单。我在另一个文件(item whitelist.php)中有一个数组,其中包含白名单项目,我希望能够通过在自定义选项页面上输入新项目来添加到该数组中。我创建了一个带有textarea字段的选项页面,供用户输入新项目,但我不确定如何向另一个文件中的数组添加输入选项。
我假设我会将输入项发布到数据库中,并从另一个文件中的数据库中读取,但我花了一段时间试图找出如何做到这一点,并没有取得太大成功。
功能。php:
<?php
add_action( \'admin_menu\', \'mp_add_admin_menu\' );
add_action( \'admin_init\', \'mp_settings_init\' );
function mp_add_admin_menu( ) {
add_options_page( \'my-plugin\', \'my-plugin\', \'manage_options\', \'my-plugin\', \'mp_options_page\' );
}
function mp_settings_init( ) {
register_setting( \'pluginPage\', \'mp_settings\' );
add_settings_section(
\'mp_pluginPage_section\',
__( \'Your section description\', \'wordpress\' ),
\'mp_settings_section_callback\',
\'pluginPage\'
);
add_settings_field(
\'mp_textarea_field_0\',
__( \'Settings field description\', \'wordpress\' ),
\'mp_textarea_field_0_render\',
\'pluginPage\',
\'mp_pluginPage_section\'
);
}
function mp_textarea_field_0_render( ) {
$options = get_option( \'mp_settings\' );
?>
<textarea cols=\'40\' rows=\'5\' name=\'mp_settings[mp_textarea_field_0]\'>
<?php echo $options[\'mp_textarea_field_0\']; ?>
</textarea>
<?php
}
function mp_settings_section_callback( ) {
echo __( \'This section description\', \'wordpress\' );
}
function mp_options_page( ) {
?>
<div class="wrap">
<form action=\'options.php\' method=\'post\'>
<h1>my-plugin Settings</h1>
<?php
settings_fields( \'pluginPage\' );
do_settings_sections( \'pluginPage\' );
submit_button();
?>
</form>
</div>
<?php
}
?>
最合适的回答,由SO网友:MikeNGarrett 整理而成
我想我理解你想要实现的目标,但如果这是错误的,请纠正我。
您有一个在另一个文件中指定的数组。您希望用户能够使用选项表单将值附加到该默认数组。
我会这样做:当您在另一个文件中准备此数组时,将默认数组与用户设置的任何数组(如果有的话)合并。这样,用户将永远无法修改您的初始数组,但仍然可以对其进行贡献。
接下来,您将使用选项表单将用户数组存储到数据库中。最终产品如下所示:
<?php
// Your preset array. These are your default values.
$whitelist = array( \'your items here\' );
// Get the user array from your options.
// This is where the options form stores these values.
$mp_settings = get_option( \'mp_settings\', false );
// Check to see if you have any values, if not set an empty array.
$user_whitelist = isset( $mp_settings[\'mp_textarea_field_0\'] ) ? $mp_settings[\'mp_textarea_field_0\'] : array();
// Merging these array together gives you a unified whitelist.
$whitelist = array_merge( $whitelist, $user_whitelist );
注意:这是您将添加到其他文件中的内容,您在本问题中没有共享的文件。