หมายเหตุ: นี่เป็นคำตอบที่ไม่สมบูรณ์ซึ่งจะถูกขยายเมื่อมีการเพิ่มทีละส่วน
วิธีเดียวที่เชื่อถือได้ในการล้างกฎการเขียนซ้ำในไซต์หลายไซต์โดยไม่ทำลายโครงสร้างความคิดของเนื้อหาหลักและหรือบริบทบล็อกอื่น ๆ (ขึ้นอยู่กับวิธีและสิ่งที่คุณสลับไปมาจาก) เพื่อล้างกฎการเขียนซ้ำในบริบทที่กำหนดเช่นนั้น :
global $wp_rewrite;
$wp_rewrite->init(); //important...
$wp_rewrite->flush_rules();
ข้างต้นช่วยให้มั่นใจได้ว่าโครงสร้าง Permalink ที่ถูกต้องสำหรับบริบทที่กำหนดนั้นได้รับการดึงและตั้งค่าก่อนที่จะสร้างกฎการเขียนซ้ำและยืนยันการเปลี่ยนแปลงฐานข้อมูล
สิ่งนี้ไม่ใช้กับไซต์เดียวที่บริบทไม่สำคัญเนื่องจากมีเพียงบริบทเดียว
flush_rewrite_rules()
ในความคิดของฉันมีข้อบกพร่องในสมมติฐานที่ว่ามันเป็นบริบทที่ถูกต้อง แต่ไม่คำนึงถึงการใช้งานของเราswitch_to_blog
ซึ่งการเปลี่ยนแปลงบริบทอย่างสมบูรณ์และทำให้เราอยู่ในดินแดนอันตรายหากเราพยายามที่จะล้างกฎอาจ
นี่คือลักษณะภายในของflush_rewrite_rules()
หน้าตา:
function flush_rewrite_rules( $hard = true ) {
global $wp_rewrite;
$wp_rewrite->flush_rules( $hard );
}
ฉันไม่สามารถคิดเหตุผลว่าทำไมมันไม่ควรมีลักษณะเช่นนี้:
function flush_rewrite_rules( $hard = true ) {
global $wp_rewrite;
$wp_rewrite->init(); //hello....
$wp_rewrite->flush_rules( $hard );
}
... โดยเฉพาะอย่างยิ่งเมื่อคุณพิจารณาว่าตัวสร้างWP_Rewrite
ทำอะไร มันทำอย่างนี้ ...
public function __construct() {
$this->init();
}
แตะที่จุดแรกของความกังวลเพื่อเพิ่มเติมบรรทัดนี้
ดังนั้นปลั๊กอินจะไปเกี่ยวกับการล้างกฎการเขียนซ้ำในหลายไซต์ได้อย่างไร :
- เมื่อมีการสร้างเว็บไซต์ใหม่สำหรับเว็บไซต์หรือไม่
ลองดูสิ่งที่ WordPress คอร์จะสะดุดตาในระหว่างกระบวนการนี้:
- เป็นครั้งแรก
wpmu_create_blog()
- ซึ่งจะเรียก
install_blog()
สิ่งที่จะเปิดpopulate_options()
- จากนั้น
populate_options()
ตั้งค่าโครงสร้างลิงก์เริ่มต้นในตารางตัวเลือก
- หลังจาก
install_blog()
วิ่งwp_install_defaults()
แล้วถูกเรียก
- จากนั้นฟ
wp_install_defaults()
ลัชกฏการเขียนซ้ำสำหรับไซต์ที่สร้างขึ้นใหม่ก่อนที่จะเปลี่ยนกลับไปเป็นบล็อกปัจจุบันผ่านทางในrestore_current_blog()
ที่สุด
สิ่งสำคัญที่ควรทราบคือฟwp_install_defaults()
ลัชกฏทุกประการตามที่ฉันแนะนำด้านบน:
$wp_rewrite->init();
$wp_rewrite->flush_rules();
... เพราะนั่นเป็นวิธีเดียวที่จะตรวจสอบให้แน่ใจว่าpermalink_structure
มีการสร้างกฎและกฎที่ถูกต้องสำหรับบริบทปัจจุบัน
นอกจากนี้ในปัญหาที่พบภายในปัญหา Githubเหตุผลที่ผู้ใช้ประสบปัญหาดังต่อไปนี้:
เมื่อมีการสร้างเว็บไซต์ใหม่มันจะแบ่งระดับการโพสต์ไว้ในไซต์ระดับบนสุดเท่านั้น - ในการกำหนดค่าลิงก์ส่วนใหญ่ แต่ไม่ใช่ทั้งหมด:
2 รูปแบบเหล่านี้ทำงานอย่างถูกต้อง
ค่าเริ่มต้น - ทำงานตามที่คาดไว้
วัน & ชื่อ - ทำงานตามที่คาดไว้
... เพราะถ้าบล็อกหลักมีโครงสร้างลิงก์ Day & Name /%year%/%monthnum%/%day%/%postname%/
เมื่อมีการสร้างเว็บไซต์ใหม่ก็จะมีโครงสร้างลิงก์/%year%/%monthnum%/%day%/%postname%/
ตามวันและชื่อตามค่าเริ่มต้นด้วยเหตุนี้จึงไม่มีปัญหาที่น่าสังเกตเมื่อปลั๊กอิน SEO ของ Yoast เขียนใหม่ กฎระเบียบเกี่ยวกับshutdown
เบ็ด