Preciso remover alguns campos de perfil da página 'Perfil' de acordo com as funções de usuário. Para remover o seletor de cores que eu usei remove_action("admin_color_scheme_picker", "admin_color_scheme_picker")
. Quero remover estes campos:
- Apelido
- Exibir nome publicamente como
- Campos AIM, Yahoo, Google talk e Sobre você
- A seção 'Mostrar barra de administrador', juntamente com as 2 caixas de seleção
Examinei o arquivo 'user-edit.php' para ver se existem ações / filtros que me permitem fazê-lo, mas parece que não há. Alguém pode me dizer como fazer isso? Qualquer ajuda seria apreciada. obrigado
EDIT: Obrigado @helenhousandi pela resposta. Eu já tinha feito dessa maneira.
<?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 }
}
?>
Eu sei que isso é um pouco mais longo, mas funcionou! Acho que vou com a resposta de @ helenhousandi.
functions.php
ou um arquivo de plugin. Enquanto os ganchos estiverem certos, ele funcionará em qualquer um dos lugares.Respostas:
Para o filtro de métodos de contato
user_contactmethods
:fonte
Embora o
user_contactmethods
filtro seja um dos poucos para a tela de perfil do usuário, já que os outros campos não são obrigatórios no WordPress, você pode usar o jQuery.hide()
e.remove()
se livrar efetivamente daqueles que não deseja, sem complicações em termos de salvar as informações . Claro, uma pessoa sem o JS ligado ainda os veria, mas isso é uma pequena minoria e acho que as informações que mudam lá realmente não afetam nada.Um exemplo de remoção de toda a parte das opções pessoais (mostra a barra de administração e o esquema de cores). Sei que não é exatamente o que você está procurando, só queria dar um exemplo rápido que tenho em mãos:
Além disso, uma observação sobre a opção Mostrar barra de administrador: na versão 3.3, a barra de administrador está se tornando o cabeçalho e, portanto, não pode ser ativada ou desativada, portanto, pode não valer a pena se preocupar.
Atualizei o exemplo de código para ser mais preciso e completo. Tinha algumas sobras lá.
fonte
profile.php
. Eu também precisava fazer isso para uma função personalizada específica definida no meu sistema. Atualizando minha pergunta com a resposta.$("#nickname,#display_name").parent().parent().remove();
Como parece não haver um bom gancho de php para isso, acabei escondendo os campos com CSS e os removemos com JS.
fonte
No fórum de suporte do wordpress, você pode fazer a remoção usando PHP. Isso remove a seção Sobre você mesmo:
O código substitui o cabeçalho 'Sobre você' por 'Senha' e remove qualquer coisa entre a tabela seguinte e a próxima que encontrar (que é a tabela de senhas).
Além disso, o plugin WP Hide Dashboard substitui o jQuery semelhante, se você deseja estender isso.
fonte
admin_head-profile.php
e, emadmin_footer-profile.php
vez disso,SEJA CUIDADOSO!!
1) A remoção de um campo pode não ser boa , como na atualização, se você não enviar os campos essenciais para o gancho de atualização do WORDPRESS, ele poderá definir valores vazios para esses campos! (por exemplo, no formulário de envio, deve existir, por exemplo
<input name="username".../>
). Acho que é melhor ocultar visualmente os usuários apenas com jquery
.hide();
e não com o.remove();
código EXEMPLO para ocultar os campos " DISPLAY NAME " e " NICKNAME ":
2) Para ocultar a barra de administração, existe uma opção especial no menu do wordpress (em Configurações) . para código personalizado, como ie
fonte
Usar
e adicione
antes do JavaScript.
fonte
Não há filtro para desativá-los. Veja a fonte (
/wp-admin/user-edit.php
) quando precisar fazer coisas assim. Você pode ocultá-los com JS, mas eles ainda podem se tornar visíveis e os valores são atualizados no POST.A única opção viável é invadir você mesmo o núcleo. Apenas lembre-se de lidar com a atualização e desconsidere esses campos no POST.
fonte