As mensagens atualizadas da API de configurações não serão exibidas se a página de administrador personalizada não estiver conectada a add_options_page ()

9

Estivemos brincando com a API de configurações e descobrimos que as mensagens (de sucesso ou erros) são exibidas apenas quando uma página de configurações é conectada ao menu do WordPress via add_options_page (). Qualquer outra coisa não funcionará, por exemplo, add_dashboard_page (). Gostaria de saber se isso é verdade? O código de exemplo com o qual eu tentei é a resposta que contém a classe "RegisteredSettingsTest" em Onde conectar register_settings para a API de configurações quando também deseja atualizar opções fora da API de configurações?

Jesse van Couten
fonte

Respostas:

21

Agradecemos ao Chip ( excelente tutorial da API de configurações ) e ao t31os ( ótimo trecho de código para testes rápidos ) pelas duas sugestões.

Pesquisei mais e descobri que as mensagens padrão podem realmente ser exibidas se eu conectar qualquer menu, mas somente se a função settings_errors () for chamada.

Por exemplo, modificando o código t31os da seguinte maneira:

<div class="wrap">
  <h2>Test</h2>
  <?php settings_errors(); ?>
  <form action="options.php" method="post">

Mensagens de erro personalizadas também podem ser adicionadas chamando a função add_settings_error () para exibir mensagens de sucesso ou falha, especificando o $typeparâmetro como 'error' ou 'updated'.

Jesse van Couten
fonte
isso me deixou perplexo por um tempo também! usando settings_errors();fez o truque, obrigado por postar um acompanhamento Jesse!
usar o seguinte código
10

Uso a integração da API de configurações com meu tema, uso add_theme_page()e não tenho problemas para exibir avisos de administrador.

Suspeito que seja um problema com seu código, e não uma limitação da API de configurações.

Você pode postar seu código real, para que possamos ajudá-lo a resolver problemas relacionados ao código?

EDITAR

Pode ser necessário enviar seus avisos de administrador explicitamente. Por exemplo, aqui está o que eu uso na minha função de marcação da página de configurações:

<?php if ( isset( $_GET['settings-updated'] ) ) {
    echo "<div class='updated'><p>Theme settings updated successfully.</p></div>";
} ?>

Suponho que você também possa fazer algo semelhante para avisos de erro.

Chip Bennett
fonte
Veja a resposta atualizada.
Chip Bennett
O código que usei pode ser encontrado em pastebin . Desculpas se não estiver claro o suficiente. O que observo é que, se eu me conectasse a um menu add_options_page()e salve as configurações, uma mensagem "Configurações salvas" será exibida. No entanto, se eu alterei o código para usar add_theme_page()ou add_dashboard_page(), a mensagem padrão "Configurações salvas" não será exibida.
Jesse van Couten
Certo ... você adicionou código conforme o exemplo acima? Você deve adicioná-lo explicitamente à sua função de marcação da página de configurações.
Chip Bennett
Sinto-me lisonjeado por você ter usado meu código de teste para criar, Chip está correto, pois você precisará adicionar o aviso explicitamente.
Boa