Preprocess submitted data

时间:2019-03-15 作者:Fusion

我创建了WordPress模块,它在WordPress Admin的常规设置中添加了我的自定义字段。然而,在管理员设置中提交整个表单后,我需要在保存到数据库之前修改字段的值。我该怎么做?

我希望修改我的字段数据before 任何默认WordPress表单验证。有什么线索吗?到目前为止,我花了这几个小时,无法用谷歌搜索任何东西。

我的代码:

位于my_module\'s主php文件。

function my_module__section(){

    $settings_page_display = \'general\';
    $section_id = \'my_module__section\';
    add_settings_section(  
        $section_id,
        \'Notification information\',
        \'my_module__section_description\',
        $settings_page_display
    );

    $field_id = \'notification_text\';
    $field_label = \'Name of customer\';

    add_settings_field(
        $field_id,
        $field_label,
        \'my_module__settings_fields_render\',
        $settings_page_display,
        $section_id,
        [$field_id, \'text\']
    );
    register_setting(\'general\', $field_id, \'esc_attr\');

}

function my_module__section_description() {
    echo \'<p>Some description</p>\';  
}

function my_module__settings_fields_render($args) {
    $field_id = $args[0];
    $field_type = $args[1];
    $option = get_option($field_id);
    echo \'<input type="\' . $field_type . \'" id="\'. $field_id .\'" name="\'. $field_id .\'" value="\' . $option . \'" required>\';
}

add_action(\'admin_init\', \'my_module__section\');
注意:我没有搜索任何前端/javascript黑客-也不例外。

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

如果我答对了你的问题也许你可以试着用update_option 操作,根据文档,“在更新选项值之前立即触发”。它获取选项、旧值和新值作为参数。https://developer.wordpress.org/reference/hooks/update_option/

这里公认的答案,Hook if somebody saves plugin options?, 也可能与您相关。

如果您觉得有冒险精神,可以将自定义清理回调添加到register_setting 并用它来做一些设置值的古怪事情。但这可能有点不合常规。

就我个人而言,我发现深入研究trac上的WP源代码也是为自定义函数找到有用操作和过滤器的好方法。在本例中,例如选项。phphttps://core.trac.wordpress.org/browser/tags/5.1.1/src/wp-includes/option.php

相关推荐

“POSTS_WHERE”筛选器未在`wp_ajax`中应用“WP_Query”

我有一个函数,它添加了posts_join 和aposts_where 在中搜索WP_Query. 它在普通的php呈现的搜索页面上运行良好。然而,我也将其用于ajax产品搜索和其他posts_join 和aposts_where 似乎不适用。以下是连接和位置:function search_by_meta_join($join) { global $wpdb; if (is_search()) { $join .= \" LEFT JOI