Existem vários componentes para criação de erro / aviso e processo de exibição:
add_settings_error()
chamada para adicionar item à pilha ( $wp_settings_errors
variável global ).
settings_errors
transitório que mantém os erros para que eles sobrevivam, movem-se de uma página para outra.
settings_errors()
função get_settings_errors()
para recuperar erros de memória ou transitória e exibe então eles.
Eles funcionam como um encanto para a API de configurações, mas infelizmente não estão configurados para uso genérico. Por outro lado, é trivial contornar isso.
Conecte-se settings_errors()
à admin_notices
página do seu plug-in e passe o código de erro para que ele mostre apenas o seu material.
Salve manualmente os erros como settings_errors
transitórios (apenas itens dessa variável global).
Como get_settings_errors()
espera uma dica nos parâmetros GET ( $_GET['settings-updated']
) de que ele deve verificar transitório em vez de memória, você pode fornecer isso ou obter erros temporários e salvá-los na variável global antes da sua settings_errors()
chamada.
Atualizar
Você está transformando isso em uma bagunça com várias perguntas, então tentarei abordar suas preocupações aqui.
API de configuração faz o trabalho com páginas de administração, que não usam seção Configurações como base. Seu problema real é que, nesse caso, os relatórios de erro / aviso não funcionam.
Primeiro, veja o que acontece quando você publica um formulário, configurado com a API de configurações:
- Os dados são publicados em uma
options.php
página especial .
- Os dados são limpos / validados usando retorno de chamada.
- Quaisquer erros / avisos surgidos durante a higienização / validação são coletados e salvos em transitório.
- Você é redirecionado de volta para onde você veio .
Agora, quando você carrega a página de administrador, ela verifica se essa página pertence à seção Configurações e se esse caso inclui um options-head.php
arquivo minúsculo , que trata da recuperação e exibição de avisos de erros.
Portanto, a única coisa que "não funciona" em outras páginas é este último passo, que é trivial para se fazer com a visão geral da função relacionada acima (eu provavelmente entrei em muitos detalhes sobre transientes, você não precisará disso para o caso básico).
Um pouco tarde, mas acabei de passar por isso. Com base no código do OP, a melhor solução que encontrei é inserir este código:
Isso adicionará a exibição do aviso de administrador às páginas de administrador renderizadas usando add_menu_page
fonte
Simplesmente adicionando
para a função $ da minha página de menu personalizada parecia funcionar bem para exibir as mensagens de erro nas páginas de menu personalizadas.
fonte