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


9

Почав грати з API налаштувань і виявив, що повідомлення (для успіху чи помилок) відображаються лише тоді, коли сторінка налаштувань підключена до меню WordPress через add_options_page (). Інші речі не працюватимуть, наприклад, add_dashboard_page (). Хотіли б знати, чи це правда? Зразок коду, з яким я спробував, - це відповідь, що містить клас "RegisteredSettingsTest" у розділі Де підключити register_settings для API 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 налаштувань.

Чи можете ви опублікувати власний код, щоб ми могли допомогти вам вирішити будь-які проблеми, пов'язані з кодом?

EDIT

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

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

Я припускаю, що ви можете зробити щось подібне і для повідомлень про помилки.


Дивіться оновлену відповідь.
Чіп Беннетт

Код, який я використав, можна знайти на пастібіні . Вибачте, якщо я недостатньо зрозумілий. Що я зауважую, це якщо я зачепився в меню за допомогою add_options_page()і зберегти налаштування, з'явиться повідомлення "Налаштування збережено". Однак якщо я змінив код на використання add_theme_page()або add_dashboard_page(), повідомлення "Налаштування збережено" за замовчуванням не з’явиться.
Джессі ван Кутен

Так ... ви додали код згідно з наведеним вище прикладом? Його потрібно додати явно до функції розмітки сторінки налаштувань.
Чіп Беннетт

Мені приємно, що ви використовували мій тестовий код, щоб створити поверх, чіп правильно, що вам потрібно буде чітко додати повідомлення.
Вдало
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.