不幸的是,这些字段的html硬编码到wp-admin/options-general.php 文件,并且没有阻止它们显示的筛选器。
下一个最好的方法可能是禁用它们。以下是我的做法:
步骤1:向常规选项页面添加一点js/jQuery,该页面将针对要禁用的输入/选择,并添加disabled 归因于他们。
PHP:
add_action( \'admin_enqueue_scripts\', \'wpse_maybe_add_custom_disable_fields_js\' );
function wpse_maybe_add_custom_disable_fields_js() {
    if ( \'options-general\' == get_current_screen()->id && is_multisite() && ! current_user_can( \'manage_network_options\' ) ) {
        wp_enqueue_script( \'wpse_custom_disable_fields\', \'path/to/disabler_script.js\', array( \'jquery\' ), false, true );
    }
}
 其中,在上面替换“path/to/disabler\\u脚本”。js`具有以下文件的正确路径:
JS公司:
(function ($) {
    var fieldsIds = [
        \'blogdescription\',
        \'WPLANG\',
        \'timezone_string\',
        \'date_format_custom_radio\',
        \'date_format_custom\',
        \'time_format_custom_radio\',
        \'time_format_custom\',
        \'start_of_week\'
    ];
    $(document).ready(function () {
        fieldsIds.forEach(function (el) {
            $(\'#\' + el).attr(\'disabled\', \'disabled\');
        });
        var radios = $(\'input[name="date_format"], input[name="time_format"]\');
        $.each(radios, function (index, el ) {
            $(el).attr(\'disabled\', \'diabled\');
        });
    });
})(jQuery);
 到目前为止,我们已经让一个“有创意”的管理员很难在这些领域中输入内容,但他们仍然可以将其破解到浏览器中。因此,第2步,我们需要在服务器端进行绑定。在这里,WP给了我们一些帮助,因为这些设置在选项处理中都是白名单,我们确实有一个过滤器来取消白名单:
PHP:
add_filter( \'whitelist_options\', \'wpse_maybe_remove_settings_from_whitelist\' );
function wpse_maybe_remove_settings_from_whitelist( array $whitelist_options ) {
    if ( is_multisite() && ! current_user_can( \'manage_network_options\' ) ) {
        $whitelist_options[\'general\'] = array( \'blogname\', \'new_admin_email\' );
    }
    return $whitelist_options;
}
 现在,当返回常规设置表单时,即使其他选项已被入侵并提交,也只会处理白名单上的选项。