เขียนใหม่ลิงก์ถาวรที่กำหนดเองชนิดด้วยคำศัพท์อนุกรมวิธาน?


16

ฉันกำลังพยายามเขียน url ใหม่สำหรับ custom_post_type ที่wr_eventsมีชื่อด้วยหนึ่งในเงื่อนไข custom_taxonomy จากevent_type

add_action('init', 'wr_events');

function wr_events() {

     register_taxonomy(
        'event_type',
        'wr_event',
        array(
            'label' => 'Types',
            'singular_label' => 'Typ',
            'hierarchical' => true,
            'query_var' => true,
            'rewrite' => array('slug' => 'events'),
        )
    );

    $labels = array(
        'name' => _x('Events', 'post type general name'),
        'singular_name' => _x('Event', 'post type singular name')
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title','editor','thumbnail', 'excerpt'),
        'rewrite' => array(
            //'slug' => 'event',
            'slug' => 'events/%event%',
            'with_front' => false
        ),
        'has_archive' => 'events'
    ); 

    register_post_type( 'wr_event' , $args );
    flush_rewrite_rules();
}

add_action('save_post', 'save_details');

add_filter('post_type_link', 'events_permalink_structure', 10, 4);
function events_permalink_structure($post_link, $post, $leavename, $sample)
{
    if ( false !== strpos( $post_link, '%event%' ) ) {
        $event_type_term = get_the_terms( $post->ID, 'event_type' );
        $post_link = str_replace( '%event%', array_pop( $event_type_term )->slug, $post_link );
    }
    return $post_link;
}

ดังนั้นในกรณีของฉันคำศัพท์อนุกรมวิธานของฉันจะเป็น "การประชุมเชิงปฏิบัติการ" หรือ "การบรรยาย" ฯลฯ url/events/lecturesหรือurl/events/workshopsแสดงรายการโพสต์ทั้งหมดของฉันที่เกี่ยวข้องกับ "หมวดหมู่" นี้url/eventsแสดงการเก็บถาวรที่กำหนดเองสำหรับกิจกรรมทั้งหมดของฉัน -> นี่คือสิ่งที่ฉันต้องการ แต่สิ่งเดียวที่ไม่ทำงานคือ URL ที่สมบูรณ์ของโพสต์ที่กำหนดเอง ...

url/events/lectures/post-name - โยน 404!

มีความคิดว่าทำไมสิ่งนี้เกิดขึ้น? events_permalink_structure()ฟังก์ชั่นของฉันทำงานได้อย่างถูกต้องเพราะมันแทนที่ Permalinks ของฉันอย่างที่ฉันต้องการ

ผมติดตั้ง "Rewrite วิเคราะห์" ปลั๊กอินและมันแสดงให้เห็นฉัน "Regex เป็นที่ว่างเปล่า" wr_eventสำหรับ

ฉันได้ลองล้างกฎการเขียนซ้ำโดยไปที่การตั้งค่าลิงก์ถาวร อย่างไรก็ตามไม่มีผลกระทบ

คำตอบ:


10

เปลี่ยน% event% ทั้งหมดของคุณเป็น% event_type% ฉันหวังว่าจะเหมาะกับคุณ


ขอบคุณมาก ๆ! ! น่ากลัว อย่าเข้าใจมัน แต่มันใช้งานได้ดี :)
mathiregister

2
@mathiregister - เป็นเพราะ WP ไม่เข้าใจแท็ก% เหตุการณ์% โดยอัตโนมัติ แต่ก็เข้าใจว่า% event_type% สอดคล้องกับอนุกรมวิธานประเภทเหตุการณ์ของคุณ
Stephen Harris

ตอนนี้ฉันมีประเภทโพสต์ที่กำหนดเองกับกระสุน/catalog/ซึ่งแสดงโพสต์ทั้งหมด/katalog/whatever/แสดงโพสต์ในอนุกรมวิธานที่กำหนดเองกับกระสุนอะไรและ/katalog/whatever/mypostแสดงโพสต์เดียวซึ่งเป็นของอนุกรมวิธานอะไรก็ตาม เพียงแค่ใส่%event%รหัสด้านบนแทนชื่ออนุกรมวิธานของคุณด้วย%%
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.