問題描述
我必須根據使用者角色從’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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。