Wordpress:禁用用户个人资料中的字段

时间:2014-03-13 11:13:57

标签: wordpress plugins

如何在不修改WP核心功能的情况下隐藏用户配置文件(/wp-admin/profile.php)中的某些字段?

例如,我想隐藏(或禁用,如果我不能把它放在'隐藏'中)电子邮件字段。我已经制作了这个插件,但我不知道这是不是一个好习惯:

<?php
/**
 * Plugin Name: Disabled Email Modification
 * Plugin URI: 
 * Description: Permet de désactiver la modification d'un email par un utilisateur
 * Version: 0.0.1
 * Author: Portekoi
 * Author URI: http://blog.portekoi.com
 */

/* Hook pour 'plugins_loaded' */
add_action( 'plugins_loaded', 'dem_setup' ); // Disabled Email Modification

function dem_setup() {
    add_action( 'admin_footer', 'dem_options' );
}

/**
 * Ajout Hack en JQuery pour rendre Disabled l'ID 'Email'
 */
function dem_options( $user ) { 
    $screen = get_current_screen();
    if($screen->id == "profile"){
        ?>
        <script>
             jQuery(function () {
                jQuery(document).ready(function () {
                    jQuery("#email").prop('disabled', true);
                });
            });
        </script>
    <?php 
    }
}
?>

2 个答案:

答案 0 :(得分:1)

试试这个

function modify_contact_methods($profile_fields) {

    // Remove old fields
    unset($profile_fields['aim']);

    return $profile_fields;
}
add_filter('user_contactmethods', 'modify_contact_methods');

答案 1 :(得分:1)

据我所知,“编辑用户”和“个人资料”页面中只有三个过滤器挂钩:user_contactmethodsadmin_color_scheme_pickershow_password_fields。其他一切都必须使用jQuery完成。

您的代码可以针对admin_footer-$hook_suffix上的特定网页进行改进,并添加$作为jQuery的快捷方式:

add_action( 'plugins_loaded', 'dem_setup' );

function dem_setup() {
    foreach( array('profile','user-edit') as $hook )
        add_action( "admin_footer-$hook.php", 'dem_options' );
}

function dem_options() { 
    ?>
    <script>
        jQuery(document).ready(function ($) {
            $("#email,#url").prop('disabled', true);
        });
    </script>
    <?php 
}

我的一个插件有许多选项可以隐藏用户页面中的内容,您可以查看jQuery定位here的一些示例。