Pengaturan, pesan yang diperbarui API tidak akan ditampilkan jika halaman admin khusus tidak terhubung ke add_options_page ()

9

Telah bermain-main dengan Pengaturan API dan menemukan bahwa pesan (untuk keberhasilan atau kesalahan) hanya ditampilkan ketika halaman pengaturan dihubungkan ke menu WordPress melalui add_options_page (). Hal lain tidak akan berfungsi misalnya add_dashboard_page (). Ingin tahu apakah ini benar? Kode contoh yang saya coba adalah jawaban yang berisi kelas "RegisteredSettingsTest" di Where to hook register_settings untuk Pengaturan API ketika juga ingin memperbarui opsi di luar Pengaturan API?

Jesse van Couten
sumber

Jawaban:

21

Terima kasih Chip ( tutorial Pengaturan API yang sangat baik ) dan t31os ( cuplikan kode yang hebat untuk pengujian cepat ) untuk kedua saran Anda.

Saya melakukan penggalian lebih lanjut dan menemukan bahwa pesan default memang dapat ditampilkan jika saya menghubungkan ke menu apa pun tetapi hanya jika fungsi settings_errors () dipanggil.

Misalnya, memodifikasi kode t31os sebagai berikut:

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

Pesan kesalahan khusus juga dapat ditambahkan dengan memanggil fungsi add_settings_error () untuk menampilkan pesan berhasil atau gagal dengan menetapkan $typeparameter sebagai 'kesalahan' atau 'diperbarui'.

Jesse van Couten
sumber
ini membuat saya bingung untuk sementara waktu juga! menggunakan settings_errors();melakukan trik, terima kasih untuk mengirim tindak lanjut Jesse!
CommentLuv
10

Saya menggunakan integrasi Pengaturan API dengan Tema saya, gunakan add_theme_page(), dan tidak ada masalah menampilkan pemberitahuan admin.

Saya menduga bahwa ini adalah masalah dengan kode Anda dan bukan batasan API Pengaturan.

Bisakah Anda memposting kode Anda yang sebenarnya, sehingga kami dapat membantu Anda menyelesaikan masalah terkait kode apa pun?

EDIT

Anda mungkin perlu mengeluarkan pemberitahuan admin Anda secara eksplisit. Misalnya, inilah yang saya gunakan dalam fungsi markup halaman pengaturan saya:

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

Saya berasumsi Anda juga bisa melakukan sesuatu yang mirip dengan pemberitahuan kesalahan.

Chip Bennett
sumber
Lihat jawaban yang diperbarui.
Chip Bennett
Kode yang saya gunakan dapat ditemukan di pastebin . Maaf jika saya tidak cukup jelas. Apa yang saya amati adalah jika saya terhubung ke menu melalui add_options_page()dan menyimpan pengaturan, pesan "Pengaturan disimpan" akan ditampilkan. Namun, jika saya mengubah kode yang akan digunakan add_theme_page()atau add_dashboard_page(), maka pesan "Pengaturan tersimpan" default tidak akan muncul.
Jesse van Couten
Benar ... apakah Anda menambahkan kode seperti contoh di atas? Anda harus menambahkannya secara eksplisit ke fungsi markup halaman pengaturan Anda.
Chip Bennett
Saya tersanjung Anda menggunakan kode pengujian saya untuk membangun di atas, Chip benar bahwa Anda harus menambahkan pemberitahuan sendiri secara eksplisit. Semoga berhasil dengan halaman pengaturan Anda Jesse .. :)
t31os