Los mensajes actualizados de la API de configuración no se mostrarán si la página de administración personalizada no está conectada a add_options_page ()

9

He estado jugando con la API de configuración y descubrí que los mensajes (para éxito o errores) solo se muestran cuando una página de configuración está enganchada en el menú de WordPress a través de add_options_page (). Cualquier otra cosa no funcionará, por ejemplo, add_dashboard_page (). ¿Le gustaría saber si esto es cierto? El código de muestra con el que probé es la respuesta que contiene la clase "RegisteredSettingsTest" en ¿Dónde enganchar register_settings para la API de configuración cuando también desea actualizar opciones fuera de la API de configuración?

Jesse van Couten
fuente

Respuestas:

21

Gracias Chip ( excelente tutorial de API de configuración ) y t31os ( excelente fragmento de código para pruebas rápidas ) por sus sugerencias.

Investigué un poco más y descubrí que los mensajes predeterminados se pueden mostrar si engancho a cualquier menú, pero solo si se llama a la función settings_errors () .

Por ejemplo, modificando el código t31os de la siguiente manera:

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

Los mensajes de error personalizados también se pueden agregar llamando a la función add_settings_error () para mostrar el mensaje de éxito o falla especificando el $typeparámetro como 'error' o 'actualizado'.

Jesse van Couten
fuente
¡Esto me dejó perplejo por un tiempo también! usando settings_errors();hizo el truco, gracias por publicar un seguimiento Jesse!
CommentLuv
10

Utilizo la integración de API de configuración con mi tema, uso add_theme_page()y no tengo problemas para mostrar avisos de administrador.

Sospecho que es un problema con su código en lugar de una limitación de la API de configuración.

¿Puede publicar su código real, para que podamos ayudarlo a resolver cualquier problema relacionado con el código?

EDITAR

Es posible que deba enviar sus avisos de administrador explícitamente. Por ejemplo, esto es lo que uso en la función de marcado de la página de configuración:

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

Supongo que también podría hacer algo similar para los avisos de error.

Chip Bennett
fuente
Ver respuesta actualizada.
Chip Bennett
El código que utilicé se puede encontrar en pastebin . Disculpas si no soy lo suficientemente claro. Lo que observo es que si me conecto a un menú a través de add_options_page()y guardo la configuración, se mostrará el mensaje "Configuración guardada". Sin embargo, si cambié el código para usar add_theme_page()o add_dashboard_page(), no aparecerá el mensaje predeterminado "Configuración guardada".
Jesse van Couten 01 de
Correcto ... ¿agregó código según el ejemplo anterior? Debe agregarlo explícitamente a la función de marcado de la página de configuración.
Chip Bennett
Me siento halagado de que haya usado mi código de prueba para construir encima, Chip está en lo correcto y necesitará agregar el aviso explícitamente. La mejor de las suertes con la página de configuración Jesse .. :)
t31os