Saya memiliki posting ketik yang menggunakan post_save untuk mengambil alamat dari post-meta dan mengambil koordinat lat / lng dari Google API. Saya perlu cara memberi tahu pengguna jika ada masalah dengan mengambil coordintes. Saya mencoba menggunakan admin_notices, tetapi tidak ada yang ditampilkan:
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'));
Saya tidak yakin apakah saya menggunakannya secara salah atau dalam konteks yang salah. Agar jelas, dalam kode aktual add_action ada di fungsi lain di kelas yang sama. Itu bekerja dengan baik.
Jawaban:
Alasan ini tidak berhasil adalah karena ada pengalihan yang terjadi setelah tindakan save_post. Salah satu cara Anda dapat mencapai keinginan yang Anda inginkan adalah dengan mengimplementasikan kerja cepat menggunakan vars kueri.
Berikut adalah contoh kelas untuk diperagakan:
Semoga ini bisa membantu Anda sedikit. Bersulang
sumber
public function admin_notices()
(braket penutupan tambahan diif ( ! isset(..
baris)remove_query_arg('YOUR_QUERY_VAR');
karena saya dapat mengaturnya dari pembaruan terakhir.Membuat kelas pembungkus untuk skenario semacam ini. Sebenarnya kelas dapat digunakan dalam skenario apa pun yang melibatkan menampilkan pemberitahuan. Saya menggunakan standar PSR, jadi penamaannya tidak biasa pada kode Wordpress.
Pemakaian:
Pemberitahuan ditampilkan sekali.
sumber
Selain jawaban jonathanbardo yang hebat dan berfungsi dengan baik, jika Anda ingin menghapus argumen kueri setelah halaman baru dimuat, Anda dapat menggunakan filter removable_query_args . Anda mendapatkan berbagai nama argumen yang dapat Anda tambahkan argumen Anda sendiri. Kemudian WP akan menghapus semua argumen dalam daftar dari URL.
Sesuatu seperti:
Akan menjadi:
sumber
Sederhana, elegan, berdasarkan
get_settings_errors()
.Pemakaian
Dalam penangan permintaan pos Anda:
Di mana Anda ingin menggunakan pemberitahuan admin, biasanya di
admin_notices
hook.sumber