jessevancouten
  • 0
Новичок

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

  • 0

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

Share
  1. Спасибо 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 параметр как «ошибка» или «обновлено».

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

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

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

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

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

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

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

    • 0

Оставить ответ

You must login to add an answer.