当我发布每个options.php时,我是否需要清理wordpress选项?

时间:2018-05-02 21:05:00

标签: wordpress sanitization wordpress-admin

我正在写一个cookie通知插件,我想知道当我通过options.php发布/存储选项并通过get_option()使用选项时,我是否需要对输入进行sanitzie或转义选项的输出。

我只是想创建一个安全的插件。

这是一个如何处理选项的例子:

function formz_register_settings()
{
    add_option('formzname', 'guckguck');
    register_setting('formz_settings', 'formzname', 'formz_callback');

}

add_action( 'admin_init', 'formz_register_settings' );


function formz_register_options_page() {
    add_options_page('Page Title', 'FORMZ', 'manage_options', 'formz', 'create_admin_option_page');
}
add_action('admin_menu', 'formz_register_options_page');

function create_admin_option_page(){


    ?>

    <h1>Formulare bearbeiten</h1>
<hr>


    <form method="post" action="options.php">
        <?php settings_fields('formz_settings'); ?>
    <table class="form-table">
        <tr valign="top">
            <th scope="row"><label for="formzname">Facebook Pixel ID</label></th>
            <td><input class="regular-text code" type="text" id="formzname" name="formzname"
                       value="<?php echo esc_html(get_option('formzname')); ?>"/></td>
        </tr>




    </table>
        <?php submit_button(); ?>

    </form>
<br>
    <?php echo esc_html(get_option('formzname')); ?>



<?php

}




?>

然后我使用get_option('bla');在前端显示设置。

是options.php的正确方法,还是admin-post.php更适合它?什么是差异?

基本上我只是想知道我的代码是否就像发布一样。

谢谢!

1 个答案:

答案 0 :(得分:0)

WordPress将确保在运行查询时通过转义输入来保存在数据库中是安全的,但始终最佳做法是确保使用sanitize_text_field之类的内容自行清理它

但是,您可以在register_setting函数调用中定义保存时使用的消毒方法,这样您就不必担心自己这样做了。

所以你的代码在这里:

register_setting(
    'formz_settings',
    'formzname',
    'formz_callback'
);

可以更改为:

register_setting(
    'formz_settings',
    'formzname',
    array(
        'type' => 'string',
        'sanitize_callback' => 'sanitize_text_field'
    )
);