Como remover esses campos da seção ‘Perfil’?

Eu tenho que remover alguns campos de perfil da página ‘Perfil’ de acordo com as funções do usuário. Para remover o seletor de colors, usei remove_action("admin_color_scheme_picker", "admin_color_scheme_picker") . Quero remover esses campos:

  1. Apelido
  2. Exibir nome publicamente como
  3. AIM, Yahoo, Google Talk e Sobre você campos
  4. A seção ‘Mostrar Admin Bar’ juntamente com as 2 checkboxs de seleção

Eu passei pelo arquivo ‘user-edit.php’ para ver se existem ações / filtros que me permitem fazer isso, mas parece que não existe. Alguém pode me dizer como fazer isso? Qualquer ajuda seria apreciada. obrigado

EDIT: Obrigado @helenhousandi pela resposta. Eu já fiz isso dessa maneira.

   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();   

Eu sei que isso é um pouco mais, mas funcionou! Acho que irei com a resposta da @ helenhousandi.

Solutions Collecting From Web of "Como remover esses campos da seção ‘Perfil’?"

Para o filtro de methods de contato: 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' ); 

Embora o filtro user_contactmethods seja um dos poucos para a canvas do perfil do usuário, uma vez que os outros campos não são necessários no WordPress, você pode usar o .hide() e .remove() do jQuery para se livrar efetivamente dos que você não faz quer sem complicações em termos de salvar a informação. Claro, uma pessoa sem JS ainda os veria, mas essa é uma pequena minoria e acho que as informações que mudam lá não afetarão nada.

Um exemplo de remover toda a peça de opções pessoais (mostrar barra de administração e esquema de colors). Eu sei que não é o que você está procurando exatamente, só queria dar um exemplo rápido que eu tenho na mão:

 // 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() { ?>  < ?php } 

Além disso, uma nota sobre a opção Mostrar Admin Bar: em 3.3, a barra de administração está se tornando o header e, portanto, não pode ser ativada ou desativada, por isso pode não valer a pena se preocupar.

Eu atualizei o exemplo do código para ser mais preciso e completo. Tinha algumas sobras lá.

No fórum de suporte wordpress você pode fazer a remoção usando o PHP. Isso remove a seção Sobre você mesmo:

 if (! function_exists('remove_plain_bio') ){ function remove_plain_bio($buffer) { $titles = array('#

About Yourself

#','#

About the user

#'); $buffer=preg_replace($titles,'

Password

',$buffer,1); $biotable='#

Password

.+?#s'; $buffer=preg_replace($biotable,'

Password

',$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');

O código substitui o header “Sobre você” com ‘Senha’ e, em seguida, retira qualquer coisa entre isso e a próxima tabela que encontra (qual é a tabela de senha).

Além disso, o plugin WP Hide Dashboard faz substituição similar jQuery se você quiser estender isso.

SEJA CUIDADOSO!!

1) A remoção de um campo pode não ser bom , como na atualização, se você não enviar os campos essenciais para o gancho de atualização WORDPRESS, então ele pode definir valores vazios para esses campos! (por exemplo, ao enviar o formulário, deve existir ie )
Eu acho, que é melhor ESCONDER apenas dos usuários visualmente, com jquery .hide(); e não com .remove();
EXEMPLO código para esconder os campos ” NIVEL DE VISUALIZAÇÃO ” e ” NICKNAME “:

 jQuery(document).ready(function( $ ){ $("#nickname,#display_name").parent().parent().hide(); }); 

2) Para ocultar a barra de administração, existe uma opção especial no menu wordpress (em Configurações) . para o código personalizado, como ie

 add_action('after_setup_theme', 'remove_admin_bar'); function remove_admin_bar() { if (!current_user_can('administrator') && !is_admin()) { show_admin_bar(false); } } 

Como parece não haver um bom gancho de php para isso, acabei escondendo os campos com CSS e depois os remova com JS.

 add_action( 'admin_head', 'remove_default_profile_fields' ); function remove_default_profile_fields() { global $pagenow; if( 'profile.php' != $pagenow) return; remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' ); //  selectors, each containing a field $tr = array( "tr.user-rich-editing-wrap", "tr.user-comment-shortcuts-wrap", "tr.user-first-name-wrap", "tr.user-last-name-wrap", "tr.user-admin-bar-front-wrap", "tr.user-profile-picture", "tr.user-user-login-wrap", "tr.user-display-name-wrap", "h2" // Personally I decided to remove all H2 tags too. ); $selectors = implode(", ", $tr); // Hide the fields with css, so even if javascript is disabled they wont show up. echo ""; ?>  < ?php } 

Usar

 add_action('admin_head', 'remove_profile_fields'); 

e adicione

 jQuery(document).ready(function(e) { 

antes de JavaScript.

Não há filtro para desativá-los. Olhe para a fonte ( /wp-admin/user-edit.php ) quando você precisa fazer coisas assim. Você poderia escondê-los com JS, mas eles ainda podem ser visíveis e os valores são atualizados no POST.

Apenas uma opção viável é cortar o núcleo você mesmo. Apenas certifique-se de lidar com a atualização e desconsiderar esses campos no POST.