Повідомлення, оновлені в 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.