如何在不修改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
}
}
?>
答案 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_contactmethods
,admin_color_scheme_picker
和show_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的一些示例。