Eu adoraria poder ocultar as caixas meta usando as opções da tela, em vez de removê-las ou restringi-las às funções do usuário, o objetivo é apenas "desmarcar" a caixa meta para o usuário.
Vejo como isso seria complicado, pois qualquer código que faria uma alteração no banco de dados de um usuário não teria permissão para executar toda vez que ele atingisse a página, porque ela seria redefinida. Mas pessoas mais inteligentes do que eu codifico o núcleo, então talvez haja uma maneira. E se houver, estou morrendo de vontade de saber.
Alguma ideia?
Respostas:
Você está se referindo aos metaboxes na tela de postagem do administrador, certo?
Para isso, você não precisa de um plug-in, basta soltar o seguinte no seu arquivo functions.php.
Basicamente, o que está acontecendo é que, para o usuário conectado no momento, você está alterando alguns meta_values salvos na tabela wp_usermeta.
Existem duas maneiras de usar essa função: você pode conectar-se ao 'user_register' ou conectar-se ao 'admin_init'.
A vantagem de usar 'user_register' é que essa função será acionada apenas quando um novo usuário for registrado (portanto, menor sobrecarga). No entanto, ele não funcionará para usuários que já existem.
Se você deseja que ele funcione para usuários que já existem, conecte-se a 'admin_init'. A desvantagem, é claro, é que agora essa função é acionada toda vez que um usuário acessa a página de administração.
fonte
functions.php
arquivo do meu tema porque as opções padrão são para um projeto específico, que é representado / abrigado pelo tema que estou desenvolvendo.Existe um
default_hidden_meta_boxes
filtroget_hidden_meta_boxes()
que permite modificar o que não é mostrado, desde que o usuário não tenha modificado suas preferências nas opções da tela.fonte
Tenho comentários de código sobre três soluções já postadas, mas também um comentário geral
Eles apresentam uma opção abaixo do ideal: substitua a opção da caixa de seleção Opções de tela do usuário; ou respeite-o, mas ignore seu código se o usuário alterar as caixas de seleção, mesmo para outras meta_boxes ou antes de seu código estar no WP. Parece que a escolha respeitosa só é útil se todos os seus usuários forem novos. A melhor solução seria definir uma opção de usuário personalizada para determinar se seus padrões específicos da meta_box foram alterados pelo usuário e respeitar isso. Não, eu não escrevi esse código! Deve ser fácil ... :)
As três soluções postadas:
1. A
hidden_meta_boxes
solução do WraithKenny é a que substitui a opção do usuário. Observe que ele abrange todos os tipos de postagem ('postagem', 'página', 'link', 'anexo' e qualquer tipo de postagem personalizada). Tudo bem, a menos que você queira que seja específico. Você especificou o post_type em suasadd_meta_box()
chamadas. Você pode tentar igualá-los ou apenas alterá-lo, pois os que não corresponderem serão ignorados. Se você deseja conhecer o post_type no filtro, pode usar oscreen
parâmetro extra :2. Como Rarst diz,
default_hidden_meta_boxes
respeita a opção do usuário. Assim comohidden_meta_boxes
você pode usar o parâmetro $ screen para distinguir post_types.3. A função set_user_metaboxes () do Drebabels também respeita a opção do usuário. Observe que está codificado para a tela de edição 'pós'. Para lidar com a tela de edição da 'página' e outros post_types, envolva o código neste loop:
Sim,
get_user_meta
deveria serget_user_option
. Para sites únicos, isso não importa, e mesmo para sites múltiplos, provavelmente não. Veja wp-admin / includes / ajax-actions.php para saber por que:update_user_option
possui o parâmetro global 'true'.fonte
Também existe um
hidden_meta_boxes
filtro que "desmarca" o metabox (tornando-o oculto) a cada carregamento da página (mas não precisa atualizar o banco de dados). Se você apenas deseja desativá -lo para novos usuários até que eles marquem a caixa, use a resposta da Rarst.fonte