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

8

Estamos brincando com a API de configurações e descobrimos que as mensagens (por 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á, e. add_dashboard_page (). Gostaria de saber se isso é verdade? O código de amostra com o qual tentei é a resposta que contém a classe "RegisteredSettingsTest" em Onde associar register_settings para a API de configurações quando também quiser atualizar as opções fora da API de configurações?

    
por Jesse van Couten 01.07.2011 / 13:48

2 respostas

20

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

Eu investiguei mais e descobri que as mensagens padrão podem realmente ser exibidas se eu entrar em qualquer menu, mas apenas se a função settings_errors () é chamado.

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

<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 mensagem de sucesso ou falha especificando o Parâmetro $type como 'error' ou 'updated'.

    
por Jesse van Couten 02.07.2011 / 08:24
9

Eu 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 o seu código e não com uma limitação da API de configurações.

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

EDITAR

Você pode precisar enviar seus avisos de administrador explicitamente. Por exemplo, aqui está o que eu uso na minha função de marcação de página de configurações:

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

Eu suponho que você poderia fazer algo semelhante para avisos de erro também.

    
por Chip Bennett 01.07.2011 / 13:59