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.