Viết lại một permalink tùy chỉnh sau loại với thuật ngữ phân loại?


16

Tôi đang cố gắng viết lại url của mình cho một custom_post_type được đặt tên wr_eventsbằng một trong các thuật ngữ custom_taxonomy của nó từ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;
}

Vì vậy, trong trường hợp của tôi, các thuật ngữ phân loại của tôi sẽ là "hội thảo" hoặc "bài giảng", v.v. url/events/lectureshoặc url/events/workshopsliệt kê tất cả các bài đăng của tôi liên quan đến "danh mục" này, url/eventshiển thị một kho lưu trữ tùy chỉnh cho tất cả các sự kiện của tôi. -> đây chỉ là những gì tôi muốn tuy nhiên điều duy nhất không hoạt động là url hoàn chỉnh cho chính bài đăng tùy chỉnh

url/events/lectures/post-name - ném 404!

Bất cứ ý tưởng tại sao điều này đang xảy ra? events_permalink_structure()Chức năng của tôi dường như hoạt động chính xác vì nó thay thế permalinks của tôi exaclty theo cách tôi muốn.

Tôi đã cài đặt Plugin "Rewrite Analyzer" và nó hiển thị cho tôi "Regex đang trống" wr_event.

Tôi cũng đã cố gắng xóa Quy tắc Viết lại bằng cách truy cập cài đặt permalink. Tuy nhiên không có tác dụng.

Câu trả lời:


10

Thay đổi tất cả% event% của bạn thành% event_type%. Tôi hi vọng nó làm việc cho bạn.


Cảm ơn bạn rât nhiêu! Tuyệt vời! Đừng hiểu nhưng nó vẫn hoạt động :)
mathiregister

2
@mathiregister - đó là vì WP không tự động hiểu thẻ% event%, nhưng nó hiểu rằng% event_type% tương ứng với phân loại loại sự kiện của bạn.
Stephen Harris

Bây giờ tôi có loại bài đăng tùy chỉnh với sên /catalog/hiển thị tất cả các bài đăng, /katalog/whatever/hiển thị các bài đăng trong phân loại tùy chỉnh với sên bất cứ điều gì và /katalog/whatever/myposthiển thị bài đăng duy nhất thuộc về phân loại bất cứ điều gì. Chỉ cần đặt thay vì %event%mã bên trên tên phân loại tùy chỉnh của bạn với%%
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.