Yeniden yazma kuralları düzgün kızarma ile garip bir sorun yaşıyorum.
Ben kullanarak denedi flush_rewrite_rules();
ve flush_rewrite_rules(true);
.
Ayrıca $wp_rewrite
kullanarak küreselleşmeyi denedim $wp_rewrite->flush_rules();
ve$wp_rewrite->flush_rules(true);
Her ikisi de yeniden yazma kurallarını doğru bir şekilde temizlemiyor gibi görünüyor. Bu çağrılar gerçekten çağrıldığında yeniden yazma kurallarını temizliyor. Bunu nasıl bilebilirim? Yeniden yazma kuralı yıkama hata ayıklama çözümünü kullanma .
Şu anda, eklenti etkinleştirme ve eklenti devre dışı bırakma üzerinde yeniden yazma kuralları var. Orada sorun yok.
Kullanıcıların eklentiyi yapılandırması için bir eklenti yönetim ayarları sayfam var. Ayarlardan bazıları kalıcı bağlantı yapısını ayarlar, bu nedenle yeniden yazma kurallarının eklenti yönetimi ayarları sayfasında "Ayarları Kaydet" bölümünde temizlenmesi gerekir. update_option();
Ayarları kaydetmek için (standardı kullanır ).
Belirtilen ayarlara bağlı olarak, kullanıcı tarafından belirlenen ayarlarla eşleştirmek için özel yazı türlerinin oluşturulduğunu belirtmek isterim. Bu yüzden yeniden yazma kuralları, ayarlar kaydedildikten hemen sonra temizlenmelidir. Burada işler düzgün çalışmıyor.
Sağlanan yeniden yazma kurallarının hata ayıklaması için yukarıdaki bağlantı çözümü, @toscho
tonlarca yeniden yazma kuralını temizlediğini gösteriyor. Bununla birlikte, özel yazı tipi tekil öğeyi veya hatta bu konu için özel yazı tipi arşivini ziyaret ederken, her biri 404 hatası olarak döner.
Özel gönderi türü doğru ve uygun şekilde kaydedildi. Sorun olmadığını kesin olarak biliyorum.
Eklenti yönetim sayfası ayarları ile hemen takip edin. Özel yazı türleri oluşturulur, kalıcı bağlantı yapısı ayarlanır ve tüm yeniden yazma kuralları temizlenmeye çalışılır.
Ardından özel yazı tipleri her zaman yüklenir ve init
normal gibi yüklenir .
Bazı nedenlerden dolayı, yeniden yazma kuralları düzgün bir şekilde temizlenmiyor, çünkü daha önce de söylediğim gibi, özel yazı türünün tekil veya arşiv bölümlerini ziyaret etmek 404 hataları döndürüyor.
Şimdi garip kısmı, tüm yaptığım şey yönetim izni ayarları sayfasını ziyaret etmek ve ardından özel yazı türünün tekil veya arşiv bölümlerini görüntülemek için ön uca geri dönmekse, beklendiği gibi büyülü çalışırlar.
Bu yönetim kalıcı ayarları ayarları sayfasında, yeniden yazma kurallarının uygun şekilde temizlenmesini ve benimkinin yapmamasını sağlayan yapmıyorum?
Yani, geçici bir çözüm olarak, eklenti yönetim ayarları sayfasını kaydettikten sonra kullanıcıyı yönetim kalıcı ayarları ayarları sayfasına yönlendiriyorum, ancak bu ideal bir çözüm değil. Yeniden yazma kurallarını eklentimin kodunda düzgün bir şekilde temizlemeyi tercih ederim.
WordPress'te yeniden yazma kurallarını temizlemenin artık TÜM kuralları yıkamadığı belirli bir nokta var mı?
admin_menu
- Eklenti ayarları sayfası WordPress yönetimine eklendi.
add_options_page()
- Eklenti ayarları sayfası Ayarlar menüsüne eklenir.
Ayarlar sayfası için geri aramada oluşturulur add_options_page()
. Bu, $_POST
eklenti ayarlarını güncellemek ve yeniden yazma kurallarını temizlemek için de işlendiği yerdir .
Bu zaten uzun bir soru olduğundan, geçerli bir yanıt üretmeye yardımcı olmak için bir off-link link (eğer yardımcı olur) kod blokları sağlamak için istekli olacaktır.
init
Hangi yazı türleri kaydeder yüklü bir sınıf var . Sayfa ayarlarının kaydedildiğini ve sayfanın yeniden yükleneceğini düşündüm ... sonra init
gerekli yazı türlerini kaydetmek için kancayı tekrar ateşledim . Bu yüzden yazı türlerinin zaten yükleneceğini düşündüm ve tek yapmam gereken seçeneği güncellemek, ardından eklenti ayarları sayfamdan yeniden yazma kurallarını temizlemekti. Bir çözümü nasıl bulduğuma dair bir cevap göndereceğim.
flush_rewrite_rules
, yalnızcarewrite_rules
seçeneği siler ve yeniden oluşturur, dosyayı açabilirwp-admin/options-permalinks.php
ve bunun nerede olduğunu görebilirsiniz. Bu işlem tüm seçeneği sildiğinden, kuralları kısmen yıkamak mümkün değildir.