问题描述
我必须根据用户角色从’Profile’ 页面中删除一些配置文件字段。为了去除颜色选择器,我用了 remove_action("admin_color_scheme_picker", "admin_color_scheme_picker")
。我想删除这些字段:
-
昵称
-
公开显示名称
-
AIM,雅虎,谷歌和关于你自己的领域
-
「显示管理员」 部分以及 2 个复选框
我经历了’user-edit.php’ 文件,看看是否有任何允许我这样做的动作/过滤器,但似乎没有。有人可以告诉我怎么做吗?任何帮助将不胜感激。谢谢
编辑:谢谢 @helenhousandi 的答案。我已经这样做了。
<?php
add_action('admin_footer-profile.php', 'remove_profile_fields');
function remove_profile_fields()
{
if(current_user_can('custom_role'))
{ ?>
<script type="text/javascript">
jQuery("h3:contains('Personal Options')").next('.form-table').remove();
jQuery("h3:contains('Personal Options')").remove();
jQuery("h3:contains('About Yourself')").next('.form-table').remove();
jQuery("h3:contains('About Yourself')").remove();
</script>
<?php }
}
?>
我知道这是一个更长的时间,但它的工作!我想我会去 @ helenhousandi 的答案。
最佳解决方案
对于接触方式过滤器:user_contactmethods
:
function update_contact_methods( $contactmethods ) {
unset( $contactmethods['aim'] );
unset( $contactmethods['jabber'] );
unset( $contactmethods['yim'] );
return $contactmethods;
}
add_filter( 'user_contactmethods', 'update_contact_methods' );
次佳解决方案
虽然 user_contactmethods
过滤器是用户配置文件屏幕中的少数几个,但由于 WordPress 中不需要其他字段,因此您可以使用 jQuery 的.hide()
和.remove()
来有效地摆脱不需要的复杂程序保存信息。当然,没有 JS 的人仍然会看到他们,但是这是一小部分人,我猜测在那里改变的信息实际上并不会影响任何事情。
删除整个个人选项的一个例子 (显示管理员栏和配色方案) 。我知道这不是你正在寻找的,只是想给你一个快速的例子我手头:
// remove personal options block
if( is_admin() ){
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
add_action( 'personal_options', 'prefix_hide_personal_options' );
}
function prefix_hide_personal_options() {
?>
<script type="text/javascript">
jQuery( document ).ready(function( $ ){
$( '#your-profile .form-table:first, #your-profile h3:first' ).remove();
} );
</script>
<?php
}
另外,关于 Show Admin Bar 选项的注释:在 3.3 中,管理栏正在成为标题,因此不能被打开或关闭,因此可能不值得担心。
我更新了代码示例,以更准确,更完整。在那里有一些剩菜。
第三种解决方案
从 wordpress support forum 可以使用 PHP 进行删除。这将删除 「About Yourself」 部分:
if (! function_exists('remove_plain_bio') ){
function remove_plain_bio($buffer) {
$titles = array('#<h3>About Yourself</h3>#','#<h3>About the user</h3>#');
$buffer=preg_replace($titles,'<h3>Password</h3>',$buffer,1);
$biotable='#<h3>Password</h3>.+?<table.+?/tr>#s';
$buffer=preg_replace($biotable,'<h3>Password</h3> <table class="form-table">',$buffer,1);
return $buffer;
}
function profile_admin_buffer_start() { ob_start("remove_plain_bio"); }
function profile_admin_buffer_end() { ob_end_flush(); }
}
add_action('admin_head', 'profile_admin_buffer_start');
add_action('admin_footer', 'profile_admin_buffer_end');
代码将’About Yourself’ 标头替换为’Password’,然后剥离它找到的下一个表 (这是密码表) 之间的任何东西。
另外插件 WP Hide Dashboard 做类似的 jQuery 替换,如果你想扩展它。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。