0

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

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

这是我将如何处理选项的示例:

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 更好?有什么区别?

基本上我只想知道我的代码是否可以像那样发布。

谢谢!

4

1 回答 1

1

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'
    )
);
于 2018-05-03T07:34:50.313 回答