Mam typ postu, który używa post_save do pobrania adresu z post-meta i pobrania współrzędnych lat / lng z API Google. Potrzebuję sposobu powiadomienia użytkownika, jeśli wystąpił problem z pobraniem współrzędnych. Próbowałem użyć admin_notices, ale nic się nie wyświetlało:
public static function update_notice() {
echo "<div class='error'><p>Failed to retrieve coordinates. Please check key and address.<p></div>";
remove_action('admin_notices', 'update_notice');
}
add_action('admin_notices', array('GeoPost', 'update_notice'));
Nie jestem pewien, czy używam go niepoprawnie czy w niewłaściwym kontekście. Żeby było jasne, w rzeczywistym kodzie addakcja występuje w innej funkcji w tej samej klasie. To działa dobrze.
Odpowiedzi:
Powodem tego nie jest to, że po akcji save_post następuje przekierowanie. Jednym ze sposobów na osiągnięcie pożądanego celu jest wdrożenie szybkiego obejścia przy użyciu zmiennych zapytań.
Oto przykładowa klasa do zademonstrowania:
Mam nadzieję, że to ci trochę pomoże. Twoje zdrowie
źródło
public function admin_notices()
(dodatkowy nawias zamykający wif ( ! isset(..
linii)remove_query_arg('YOUR_QUERY_VAR');
tak, jak się przekonałem, że można go ustawić od ostatniej aktualizacji.Utworzono klasę opakowania dla tego rodzaju scenariusza. W rzeczywistości klasa może być używana w dowolnym scenariuszu obejmującym wyświetlanie powiadomień. Używam standardów PSR, więc nazwa jest nietypowa dla kodu Wordpress.
Stosowanie:
Zawiadomienie jest wyświetlane raz.
źródło
Oprócz świetnej i dobrze działającej odpowiedzi @ jonathanbardo, jeśli chcesz usunąć argument zapytania po załadowaniu nowej strony, możesz użyć filtra removeable_query_args . Otrzymasz tablicę nazw argumentów, do których możesz dołączyć własny argument. Następnie WP zajmie się usunięciem wszystkich argumentów z listy z adresu URL.
Coś jak:
Stanie się:
źródło
Prosty, elegancki, oparty na
get_settings_errors()
.Stosowanie
W module obsługi żądania postu:
Gdzie chcesz użyć powiadomienia administratora, zwykle w
admin_notices
haku.źródło