ตกลงฉันได้รับตัวอย่างการทำงานสำหรับคำขอทั้ง 3 ประเภท การทดลองและใช้เวลาหลายตันเพื่อให้พวกเขาทำงานได้ ฉันเดาว่าไมโลเก่งกาจในการตอบคำถามของตัวเอง
หลังจากการเปลี่ยนแปลงมากมายและการรีเฟรช Permalinks ฉันรู้ว่ามันง่ายกว่ามากที่จะหา URL ที่อยู่นอก add_rewrite_url และเมื่อทำงานแล้วกำหนดให้เขียนใหม่ index.php?param=foo&post_type=example_type
ตัวอย่างความเป็นอยู่
อีกสิ่งที่ชัดเจน แต่เพิ่มที่นี่เพื่อช่วยคนอื่น คุณต้องกำหนดกฎการโพสต์ที่กำหนดเองประเภท add_rewrite_rule ก่อนที่คุณจะกำหนดกฎตัวแทนในหน้า / เพจย่อย ฉันเสียเวลาไปกับมันและคิดว่ามันเป็นสิ่งสำคัญที่ทำให้ฉันไม่เข้าใจว่าทำไมกฎไม่ทำงาน
นี่คือกฎ 3 ข้อที่ใช้งานได้ในทุกความต้องการของฉัน กฎของเพจ / เพจย่อยนั้นรวมกันเป็นกฎเดียว
// Custom Post Archive
add_rewrite_rule(
'^foo/example_type/?$',
'index.php?param=foo&post_type=example_type',
'top'
);
// Custom Post Individual
add_rewrite_rule(
'^foo/example_type/([^/]*)/?$',
'index.php?param=foo&example_type=$matches[1]',
'top'
);
// Pages, Top-Level and Sub-Pages
// This MUST be placed in the code AFTER custom post add_rewrite_rule
add_rewrite_rule(
'^foo/(.+)/?$',
'index.php?param=foo&pagename=$matches[1]',
'top'
);
นอกจากนี้สิ่งที่ฉันทำคือตั้งค่าการวนซ้ำเพื่อเพิ่มกฎประเภทโพสต์ที่กำหนดเองหลายรายการ โปรดจำไว้ว่าคุณต้องกำหนดกฎการโพสต์ประเภท add_rewrite_rule ที่กำหนดเองก่อนที่คุณจะกำหนดกฎตัวแทนในหน้า / เพจย่อย
$custom_types = array('example_type', 'projects', 'people');
foreach($custom_types as $type) {
// Custom Post Archive
add_rewrite_rule(
'^foo/'.$type.'/?$',
'index.php?param=foo&post_type='.$type,
'top'
);
// Custom Post Individual
add_rewrite_rule(
'^foo/'.$type.'/([^/]*)/?$',
'index.php?param=foo&'.$type.'=$matches[1]',
'top'
);
}
Rewrite วิเคราะห์ซึ่งไมโลผ่านไปเป็นประโยชน์มากเมื่อพยายามที่จะเข้าใจถึงวิธีการคำสั่ง Wordpress สำหรับหน้า / โพสต์
page
ประเภทโพสต์หรือเฉพาะหน้าใด ๆ สิ่งที่เกี่ยวกับหน้าพ่อแม่ / ลูกในลำดับชั้น?