Wiadomości Aktualizowane interfejsy API ustawień nie będą wyświetlane, jeśli niestandardowa strona administratora nie jest podłączona do add_options_page ()


9

Bawiłem się z API ustawień i odkryłem, że komunikaty (o powodzeniu lub błędach) są wyświetlane tylko wtedy, gdy strona ustawień jest zaczepiona do menu WordPress za pomocą add_options_page (). Nic innego nie będzie działać, np. Add_dashboard_page (). Chciałbyś wiedzieć, czy to prawda? Przykładowy kod, z którym próbowałem, to odpowiedź zawierająca klasę „RegisteredSettingsTest” w Where to hook register_settings for Settings API, kiedy chcesz także zaktualizować opcje poza Settings API?

Odpowiedzi:


21

Dzięki Chip ( doskonały samouczek API ustawień ) i t31os ( świetny fragment kodu do szybkiego testowania ) za obie sugestie.

Przeprowadziłem dalsze kopanie i stwierdziłem, że domyślne komunikaty mogą być wyświetlane, jeśli podpinam się do dowolnego menu, ale tylko wtedy, gdy wywoływana jest funkcja settings_errors () .

Na przykład modyfikując kod t31os w następujący sposób:

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

Niestandardowe komunikaty o błędach można również dodawać, wywołując funkcję add_settings_error () w celu wyświetlenia komunikatu o powodzeniu lub niepowodzeniu, określając $typeparametr jako „błąd” lub „zaktualizowany”.


to też mnie zaskoczyło! using settings_errors();załatwił sprawę, dzięki za opublikowanie śledzenia Jesse!
CommentLuv

10

Używam integracji API ustawień z moim motywem, używam add_theme_page()i nie mam problemu z wyświetlaniem powiadomień administratora.

Podejrzewam, że jest to problem z twoim kodem, a nie ograniczenie interfejsu API ustawień.

Czy możesz opublikować swój kod, abyśmy mogli pomóc Ci rozwiązać problemy związane z kodem?

EDYTOWAĆ

Może być konieczne jawne przesłanie powiadomień administratora. Na przykład oto, czego używam w funkcji znaczników strony ustawień:

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

Zakładam, że możesz zrobić coś podobnego w przypadku powiadomień o błędach.


Zobacz zaktualizowaną odpowiedź.
Chip Bennett

Kod, którego użyłem, można znaleźć na pastebin . Przepraszam, jeśli nie jestem wystarczająco jasny. Zauważyłem, że jeśli połączyłem się z menu add_options_page()i zapisałem ustawienia, wyświetli się komunikat „Ustawienia zapisane”. Jeśli jednak zmienię kod na używany add_theme_page()lub add_dashboard_page(), wówczas domyślny komunikat „Zapisane ustawienia” nie pojawi się.
Jesse van Couten

Racja ... czy dodałeś kod zgodnie z powyższym przykładem? Musisz dodać go jawnie do funkcji znaczników strony ustawień.
Chip Bennett

Cieszę się, że użyłeś mojego kodu testowego do zbudowania, Chip ma rację, że musisz osobno dodać zawiadomienie. Powodzenia ze stroną ustawień Jesse .. :)
t31os
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.