ฉันมีปัญหาแปลก ๆ นิดหน่อยกับกฎการเขียนซ้ำไม่ได้ล้างอย่างถูกต้อง
ผมได้ลองใช้และflush_rewrite_rules();
flush_rewrite_rules(true);
ฉันยังได้ลอง$wp_rewrite
ใช้โลกาภิวัตน์$wp_rewrite->flush_rules();
และ$wp_rewrite->flush_rules(true);
ไม่ปรากฏว่ากำลังล้างกฎการเขียนซ้ำอย่างถูกต้อง การเรียกเหล่านั้นเป็นการล้างกฎการเขียนซ้ำเมื่อถูกเรียก ฉันจะรู้สิ่งนี้ได้อย่างไร การใช้โซลูชันสำหรับการดีบักการเขียนกฎการลบทิ้ง
ขณะนี้ฉันได้เขียนกฎใหม่อีกครั้งเมื่อเปิดใช้งานปลั๊กอินและปิดใช้งานปลั๊กอิน ไม่มีปัญหา
ฉันมีหน้าการตั้งค่าการจัดการปลั๊กอินสำหรับผู้ใช้เพื่อกำหนดค่าปลั๊กอิน การตั้งค่าบางอย่างปรับโครงสร้าง permalink ดังนั้นกฎการเขียนใหม่จะต้องล้างในหน้าการตั้งค่าการบริหารปลั๊กอิน "บันทึกการตั้งค่า" (ใช้มาตรฐานupdate_option();
) เพื่อบันทึกการตั้งค่า
ฉันต้องการที่จะทราบว่าประเภทโพสต์ที่กำหนดเองถูกสร้างขึ้นเพื่อให้ตรงกับการตั้งค่าที่ผู้ใช้ระบุทั้งนี้ขึ้นอยู่กับการตั้งค่าที่ระบุ ดังนั้นกฎการเขียนใหม่จะต้องถูกลบทิ้งทันทีหลังจากบันทึกการตั้งค่า นี่คือสิ่งที่ทำงานไม่เหมาะสม
โซลูชันลิงก์ด้านบนสำหรับการดีบักกฎการเขียน@toscho
ซ้ำที่แสดงโดยแสดงว่ากำลังล้างกฎการเขียนซ้ำจำนวนมาก อย่างไรก็ตามเมื่อไปที่ไอเท็มเอกพจน์ชนิดโพสต์ที่กำหนดเองหรือแม้กระทั่งการเก็บถาวรชนิดโพสต์ที่กำหนดเองสำหรับเรื่องนั้นแต่ละข้อผิดพลาดกลับเป็น 404
ประเภทโพสต์ที่กำหนดเองมีการลงทะเบียนอย่างถูกต้องและเหมาะสม ฉันรู้แน่นอนว่าไม่ใช่ปัญหา
ติดตามการตั้งค่าหน้าการจัดการปลั๊กอินทันที มีการสร้างประเภทโพสต์ที่กำหนดเองโครงสร้าง Permalink และกฎการเขียนซ้ำทั้งหมดจะพยายามล้างออก
ประเภทโพสต์ที่กำหนดเองนั้นจะถูกโหลดเสมอและโหลดinit
เหมือนปกติ
ด้วยเหตุผลบางอย่างกฎการเขียนซ้ำไม่ได้ล้างข้อมูลอย่างถูกต้องเพราะอย่างที่ฉันพูดก่อนหน้าการไปที่ส่วนเอกพจน์หรือไฟล์เก็บถาวรของประเภทโพสต์ที่กำหนดเองจะแสดงข้อผิดพลาด 404
ตอนนี้ส่วนที่แปลกประหลาดถ้าทั้งหมดที่ฉันทำคือเพียงไปที่หน้าการตั้งค่าการจัดการ permalinks แล้วกลับไปที่ส่วนหน้าเพื่อดูส่วนเอกพจน์หรือเก็บถาวรของประเภทโพสต์ที่กำหนดเองพวกเขาทำงานได้อย่างน่าอัศจรรย์
หน้าการตั้งค่าการจัดการ permalinks ทำอะไรที่ฉันไม่ได้ทำเพื่อให้กฎการเขียนซ้ำล้างอย่างเหมาะสมและของฉันไม่ได้
ฉันหมายถึงในฐานะวิธีการชั่วคราวฉันเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าการตั้งค่าการจัดการ Permalinks หลังจากบันทึกหน้าการตั้งค่าการดูแลระบบปลั๊กอิน แต่นี่ไม่ใช่วิธีแก้ปัญหาในอุดมคติ ฉันต้องการกฎการเขียนซ้ำเพียงแค่ล้างอย่างถูกต้องภายในรหัสปลั๊กอินของฉัน
มีบางจุดใน WordPress ที่ล้างกฎการเขียนใหม่เพียงแค่ไม่ล้างกฎทั้งหมดอีกต่อไปหรือไม่
admin_menu
- หน้าการตั้งค่าปลั๊กอินถูกเพิ่มในการจัดการ WordPress
add_options_page()
- หน้าการตั้งค่าปลั๊กอินถูกเพิ่มในเมนูการตั้งค่า
add_options_page()
หน้าการตั้งค่าการแสดงผลในการเรียกกลับสำหรับ นี่คือตำแหน่งที่$_POST
จะถูกประมวลผลเพื่ออัปเดตการตั้งค่าปลั๊กอินและล้างกฎการเขียนซ้ำ
เนื่องจากนี่เป็นคำถามที่มีมานานแล้วฉันยินดีที่จะให้บล็อคโค้ด (หากช่วยได้) ในลิงก์ภายนอกที่ช่วยในการสร้างคำตอบที่ถูกต้อง
init
ซึ่งลงทะเบียนประเภทโพสต์ ฉันคิดว่าการตั้งค่าหน้าเว็บถูกบันทึกไว้และหน้าจะโหลดซ้ำ ... จากนั้นจึงลองinit
ขออีกครั้งเพื่อลงทะเบียนประเภทโพสต์ที่จำเป็น ดังนั้นฉันคิดว่าโพสต์ประเภทจะถูกโหลดแล้วและสิ่งที่ฉันต้องทำคืออัปเดตตัวเลือกจากนั้นล้างกฎการเขียนซ้ำจากหน้าการตั้งค่าปลั๊กอินของฉัน ฉันจะโพสต์คำตอบว่าฉันหาวิธีแก้ปัญหาได้อย่างไร
flush_rewrite_rules
ซึ่งเพิ่งลบrewrite_rules
ตัวเลือกและสร้างใหม่คุณสามารถเปิดไฟล์wp-admin/options-permalinks.php
และดูว่าเกิดอะไรขึ้น เนื่องจากการดำเนินการนี้เพียงลบตัวเลือกทั้งหมดจึงไม่สามารถล้างกฎบางส่วนได้