Saya mengalami sedikit masalah aneh dengan aturan penulisan ulang tidak memerah dengan baik.
Saya sudah mencoba menggunakan flush_rewrite_rules();
dan flush_rewrite_rules(true);
.
Saya juga mencoba mengglobal $wp_rewrite
menggunakan $wp_rewrite->flush_rules();
dan$wp_rewrite->flush_rules(true);
Tak satu pun yang tampaknya menyiram aturan penulisan ulang dengan benar. Panggilan-panggilan itu memang membilas aturan penulisan ulang ketika dipanggil. Bagaimana saya tahu ini? Menggunakan solusi untuk debugging pembilasan aturan penulisan ulang .
Saat ini, saya memiliki aturan penulisan ulang pada aktivasi plugin dan penonaktifan plugin. Tidak ada masalah di sana.
Saya memiliki halaman pengaturan administrasi plugin untuk pengguna untuk mengkonfigurasi plugin. Beberapa pengaturan menyesuaikan struktur permalink, sehingga aturan penulisan ulang diharuskan untuk dibilas pada halaman pengaturan administrasi plugin "Simpan Pengaturan". (Menggunakan standar update_option();
) untuk menyimpan pengaturan.
Saya ingin mencatat bahwa tergantung pada pengaturan yang ditentukan, jenis posting khusus dibuat untuk mencocokkan pengaturan yang ditentukan pengguna. Jadi aturan penulisan ulang harus segera dihapus setelah pengaturan disimpan. Di sinilah hal-hal tidak berfungsi dengan tepat.
Solusi tautan di atas untuk men-debug aturan penulisan ulang yang disediakan oleh @toscho
menampilkan bahwa itu membilas banyak aturan penulisan ulang. Namun, ketika mengunjungi item tunggal jenis pos kustom, atau bahkan arsip jenis pos kustom dalam hal ini, masing-masing kembali sebagai 404 kesalahan.
Jenis pos kustom terdaftar dengan benar dan tepat. Saya tahu pasti bukan itu masalahnya.
Segera ikuti pengaturan halaman administrasi plugin simpan. Jenis posting khusus dibuat, struktur permalink disesuaikan, dan semua aturan penulisan ulang dicoba untuk dibilas.
Jenis pos kustom kemudian dimuat selalu, dan dimuat init
seperti biasa.
Untuk beberapa alasan, aturan penulisan ulang tidak mengalir dengan benar, karena seperti yang saya katakan sebelumnya, mengunjungi bagian tunggal atau arsip dari jenis pos kustom menghasilkan 404 kesalahan.
Sekarang bagian yang aneh, jika semua yang saya lakukan adalah hanya mengunjungi halaman pengaturan permalink administrasi, dan kemudian kembali ke ujung depan untuk melihat bagian tunggal atau arsip dari jenis posting kustom, mereka ajaib bekerja seperti yang diharapkan.
Apa yang dilakukan halaman pengaturan permalink administrasi yang tidak saya lakukan yang memungkinkan aturan penulisan ulang menyiram dengan tepat dan milik saya tidak?
Maksud saya, sebagai solusi sementara, saya mengarahkan pengguna ke halaman pengaturan permalink administrasi setelah menyimpan halaman pengaturan administrasi plugin, tetapi ini bukan solusi yang ideal. Saya lebih suka aturan penulisan ulang hanya menyiram dengan benar dalam kode plugin saya.
Apakah ada titik tertentu di WordPress di mana pembilasan aturan penulisan ulang hanya tidak menyiram SEMUA aturan lagi?
admin_menu
- Halaman pengaturan plugin ditambahkan ke administrasi WordPress.
add_options_page()
- Halaman pengaturan plugin ditambahkan di bawah menu Pengaturan.
Halaman pengaturan diberikan dalam panggilan balik untuk add_options_page()
. Di sinilah juga $_POST
diproses untuk memperbarui pengaturan plugin dan menyiram aturan penulisan ulang.
Karena ini sudah merupakan pertanyaan yang panjang, saya akan bersedia memberikan blok kode (jika itu membantu) dalam tautan di luar kantor yang membantu menghasilkan jawaban yang valid.
init
register tipe tulisan mana. Saya pikir, pengaturan halaman sedang disimpan, dan halaman itu akan dimuat ulang ... lalu jalankan init
hook lagi untuk mendaftarkan jenis posting yang diperlukan. Jadi saya pikir tipe posting sudah akan dimuat, dan semua yang perlu saya lakukan adalah memperbarui opsi, kemudian menghapus aturan penulisan ulang dari halaman pengaturan plugin saya. Saya akan mengirim jawaban tentang bagaimana saya menemukan solusi.
flush_rewrite_rules
, yang hanya menghapusrewrite_rules
opsi dan membuatnya kembali, Anda dapat membuka filewp-admin/options-permalinks.php
dan melihat di mana ini terjadi. karena operasi ini hanya menghapus seluruh opsi, tidak mungkin untuk aturan flush sebagian.