管理选项页面。另存为数组

时间:2016-02-16 作者:Andy

我对PHP不太在行。我刚刚创建了WordPress管理选项页面,它工作正常:

// Admin Menu
add_action(\'admin_menu\', \'my_cool_plugin_create_menu\');
function my_cool_plugin_create_menu() {

    $parent_slug = \'test-slug\';
    $capability = \'administrator\';

    // sub menus
    add_submenu_page( $parent_slug, \'Test\', \'Test\', $capability, \'test\', \'hp_settings_page\');

    //call register settings function
    add_action( \'admin_init\', \'cm_register_settings\' );
}

function cm_register_settings() {

    // title
    register_setting( 
        \'mytheme_group\',                 // Option group 
        \'mytheme_title\',                 // Option name
        \'admin_options_sanitize_text_1\' //sanitize callback
    );

    // IDs
    register_setting( 
        \'mytheme_group\', 
        \'mytheme_ids\', 
        \'admin_options_sanitize_text_2\' 
    );   
}

// Admin Page
function hp_settings_page() { ?>

    <div class="wrap">

        <h2>Test</h2>

        <form method="post" action="options.php">
            <?php settings_fields( \'mytheme_group\' ); ?>
            <?php do_settings_sections( \'mytheme_group\' ); ?>
            <table class="form-table">                 
                <tr>
                    <th scope="row">Title</th>
                    <td>
                        <textarea name="mytheme_title" rows="10" cols="100"><?php echo get_option(\'mytheme_title\'); ?></textarea>
                    </td>
                </tr>

                <tr>
                    <th scope="row">IDs</th>
                    <td>
                        <textarea name="mytheme_ids" rows="10" cols="100"><?php echo get_option(\'mytheme_ids\'); ?></textarea>
                    </td>
                </tr>                   
            </table>

            <?php submit_button(); ?>

        </form>

    </div><?php 
}


// sanitize 1
function admin_options_sanitize_text_1($input) {    
    $new_input = sanitize_text_field( $input );     
    return $new_input;
}


// sanitize 2
function admin_options_sanitize_text_2($input) {    
    $new_input = preg_replace("/[^0-9\\,]/", "", $input );       
    return $new_input;
}
这将在数据库中创建两行,我可以显示如下值:

echo get_option(\'mytheme_ids\');
echo get_option(\'mytheme_title\');
我需要对此代码进行哪些更改,以便将其保存到数据库中的一行作为数组?然后我可以显示如下值:

$options = get_option(\'mytheme_options\');
echo = $options[\'ids\'];
echo = $options[\'title\'];
感谢您的帮助。

1 个回复
SO网友:Dylan

只需注册一个设置,然后修改表单输入即可将值保存到数组中。以下是注册设置的示例:

register_setting( 
    \'mytheme_settings\', 
    \'mytheme_settings\', 
    \'admin_options_sanitize\' 
);

$mytheme_settings = get_option( \'mytheme_settings\' );
和字段标记:

<textarea name="mytheme_settings[title]">
    <?php echo esc_textarea( $mytheme_settings[\'title\'] ); ?>
</textarea>   
您还需要组合清理函数,修改它们以使用新数组中的值。

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果