Обновленные сообщения API настроек не будут отображаться, если пользовательская страница администратора не подключена к add_options_page ()

9

Поигрался с API настроек и обнаружил, что сообщения (для успеха или ошибок) отображаются только тогда, когда страница настроек подключена к меню WordPress через add_options_page (). Все остальное не будет работать, например, add_dashboard_page (). Хотите знать, если это правда? Пример кода, с которым я пробовал, содержит ответ, содержащий класс «RegisteredSettingsTest» в разделе Где подключать register_settings для API настроек, когда также требуется обновить параметры вне API настроек?

Джесси ван Котен
источник

Ответы:

21

Спасибо Chip ( отличное руководство по настройке API ) и t31os ( отличный фрагмент кода для быстрого тестирования ) за ваши предложения.

Я продолжил копать и обнаружил, что сообщения по умолчанию действительно могут отображаться, если я подключаюсь к какому-либо меню, но только если вызывается функция settings_errors () .

Например, изменив код t31os следующим образом:

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

Пользовательские сообщения об ошибках также можно добавить, вызвав функцию add_settings_error () для отображения сообщения об успехе или $typeошибке, указав параметр либо как «ошибка», либо «обновленный».

Джесси ван Котен
источник
это меня тоже немного озадачило! с помощью settings_errors();сделал трюк, спасибо за размещение Джесси!
CommentLuv
10

Я использую интеграцию настроек API с моей темой, использую add_theme_page(), и у меня нет проблем с отображением уведомлений администратора.

Я подозреваю, что это проблема вашего кода, а не ограничение API настроек.

Можете ли вы опубликовать свой фактический код, чтобы мы могли помочь вам решить любые проблемы, связанные с кодом?

РЕДАКТИРОВАТЬ

Возможно, вам придется явно выводить уведомления администратора. Например, вот что я использую в своей функции разметки страницы настроек:

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

Я предполагаю, что вы могли бы сделать что-то подобное и для сообщений об ошибках.

Чип Беннетт
источник
Смотрите обновленный ответ.
Чип Беннетт
Код, который я использовал, можно найти на pastebin . Извиняюсь, если я не достаточно ясен. Что я вижу, так это то, что если я подключусь к меню add_options_page()и сохраню настройки, появится сообщение «Настройки сохранены». Однако если я изменил код для использования add_theme_page()или add_dashboard_page(), то сообщение «Настройки сохранено» по умолчанию не появится.
Джесси ван Кутен
Правильно ... Вы добавили код в соответствии с примером выше? Вы должны добавить его явно в функцию разметки страницы настроек.
Чип Беннетт
Я польщен тем, что ты использовал мой тестовый код для сборки на вершине, Чип прав, что тебе нужно явно добавить уведомление.
Желаем