ความขัดแย้งบุ้งโพสต์แบบกำหนดเอง / ความบุ้งของหน้า - ป้องกันการใช้บุ้งสงวนในการบันทึกหน้า?


13

ฉันมีประเภทโพสต์ที่กำหนดเองของผลงาน (ผลงานกระสุน) ในชุดรูปแบบของฉันและทั้งหมดทำงานได้ดียกเว้นสิ่งหนึ่ง เมื่อผู้คนสร้างเพจที่มีผลงานกระสุนเช่น: example.com/portfolio ชุดรูปแบบคิดว่าฉันต้องการใช้หน้าเก็บถาวรชนิดโพสต์ที่กำหนดเองไม่ใช่หน้าของฉันสร้างขึ้นในโปรแกรมแก้ไข

ฉันจะ "สำรอง" พอร์ตกระสุนอย่างใดอย่างหนึ่งเมื่อหน้าจะถูกบันทึกเพื่อให้แน่ใจว่ามันไม่เคยถูกใช้งานอาจถูกเปลี่ยนชื่อเป็นหน้าพอร์ตโฟลิโอ?

โครงการของฉันใช้วิธีการที่ระบุไว้ในบทช่วยสอนนี้ต่อไปนี้เป็นข้อขัดแย้งที่ฉันอ้างถึง:

"นอกเหนือจากการแก้ไขรหัสแล้วยังมีอีกหนึ่งสิ่งที่คุณไม่สามารถเรียกหน้ากระสุนของคุณได้เช่นเดียวกับกระสุนชนิดโพสต์ที่กำหนดเองคิดว่ากระสุนชนิดโพสต์ที่กำหนดเองของคุณเป็นคำหลักที่สงวนไว้อย่างไรก็ตามคุณสามารถสร้าง ชื่อของหน้าของคุณเป็นชื่อเดียวกับทากประเภทโพสต์ที่กำหนดเองตราบใดที่ทากหน้าของคุณมีความแตกต่าง " - http://wp.tutsplus.com/tutorials/custom-post-type-pagination-chaining-method/

ขอบคุณสำหรับคำแนะนำใด ๆ !


ตัวเลือกหนึ่งที่ฉันเห็นคือการลบสิ่งนี้ออกจาก register_post_type () init: 'rewrite' => array ('slug' => 'portfolio', 'with_front' => true) และเพียงตั้ง 'rewrite' => false และ เพียงอยู่กับรายการพอร์ต "เดี่ยว" ที่น่าเกลียด
hhins

โหวตคำถามของคุณเพราะฉันต้องการทราบคำตอบ! ฉันได้ทำงานกับโพสต์ที่กำหนดเองสองสามครั้ง แต่ฉันไม่เคยสังเกตเรื่องนี้และหลังจากอ่านคำถามของคุณฉันลองแล้ว ถูกต้องแล้ว WordPress ทำให้สับสนที่นี่!
Rutwick Gangurde

คำตอบ:


13

ตัวกรอง 2 ตัวต่อไปนี้ช่วยให้คุณสามารถเชื่อมโยงเมื่อ WordPress ตรวจสอบกระสุนและพบในฟังก์ชั่น wp_unique_post_slug () ในไฟล์ wp-include / post.php

มีตัวกรอง 2 ตัวหนึ่งตัวสำหรับโพสต์แบบลำดับชั้นและอีกหนึ่งตัวสำหรับแบบไม่เป็นลำดับชั้น ตัวกรองแบบลำดับชั้นจัดเตรียม ID สำหรับพาเรนต์โพสต์ดังนั้นหาก $ post_parent เป็น 0 คุณรู้ว่านี่เป็นโพสต์ "ฐาน"

ตัวกรองจะผ่าน $ post_type หากคุณต้องการเพิ่มประเภทโพสต์เฉพาะลงในตรรกะของคุณ

โดยการส่งกลับ "จริง" คุณกำลังบอก WordPress ว่ากระสุนนี้ไม่ดีดังนั้น WordPress จึงเพิ่มในคำต่อท้ายเหมือนกับว่ามันจะทำอย่างไรถ้าคุณพยายามให้เราโพสต์ชื่อ / กระสุนที่ได้ดำเนินการไปแล้ว

add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'portfolio_is_bad_hierarchical_slug', 10, 4 );
function portfolio_is_bad_hierarchical_slug( $is_bad_hierarchical_slug, $slug, $post_type, $post_parent ) {
    if ( !$post_parent && $slug == 'portfolio' )
        return true;
    return $is_bad_hierarchical_slug;
}

add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'portfolio_is_bad_flat_slug', 10, 3 );
function portfolio_is_bad_flat_slug( $is_bad_flat_slug, $slug, $post_type ) {
    if ( $slug == 'portfolio' )
        return true;
    return $is_bad_flat_slug;
}

ด้วยเหตุผลบางอย่างฉันยังคงเผชิญกับปัญหาเดียวกัน
Tan-007

1

สร้างหน้าเว็บด้วย 'ผลงาน' และสร้างเป็น 'ส่วนตัว' มันจะถูกซ่อนจากสาธารณะเมื่อทำการจองกระสุนจากการใช้งานในอนาคต


1

มาข้ามปัญหานี้เมื่อตรวจสอบปัญหาการแบ่งหน้า เรามีหน้าแรกของข่าว (กระสุน "ข่าว") และการแบ่งหน้าล้มเหลว ... ความพยายามที่จะไปที่ / ข่าว / หน้า / 2 / มักจะส่งผลให้ '404 - ไม่พบ'

ปัญหากลับกลายเป็นว่าประเภทข่าวที่กำหนดเองของเรายังได้รับ "ข่าว" กระสุน โดยการเปลี่ยนอันหลัง (เช่น "news_archive") ปัญหาได้รับการแก้ไขแล้ว สิ่งนี้ทำให้การอ้างอิง URL ข่าวดั้งเดิมไม่เปลี่ยนแปลง การเปลี่ยนทากหน้าแรกของข่าวยังใช้งานได้ แต่ URL ทั้งหมดจะรวมการเปลี่ยนทาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.