분류 용어로 맞춤 게시 유형의 퍼머 링크를 다시 작성 하시겠습니까?


16

wr_events에서 custom_taxonomy 용어 중 하나로 이름이 지정된 custom_post_type에 대한 URL을 다시 작성하려고합니다.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()내가 원하는 방식으로 영구 링크를 대체함에 따라 내 기능이 올바르게 작동하는 것 같습니다.

"Rewrite Analyzer"플러그인을 설치 했는데에 대한 "Regex is empty"가 표시 wr_event됩니다.

또한 permalink 설정을 방문하여 Rewrite Rules를 플러시하려고 시도했습니다. 그러나 효과가 없습니다.

답변:


10

모든 % event %를 % event_type % (으)로 변경하십시오. 나는 그것이 당신을 위해 작동하기를 바랍니다.


대단히 감사합니다! 대박! 그것을 얻지 않지만 작동 :)
mathiregister 14시 57 분

2
@mathiregister-WP가 % event % 태그를 자동으로 이해하지 못하기 때문에 % event_type %이 (가) 이벤트 유형 분류 체계에 해당한다는 것을 이해합니다.
Stephen Harris

이제 /catalog/모든 게시물을 표시 하고 슬러그 가 /katalog/whatever/있는 사용자 정의 분류법으로 /katalog/whatever/mypost게시물을 표시하고 분류에 속하는 단일 게시물을 표시 하는 슬러그가있는 사용자 정의 게시물 유형이 있습니다. 다음 %event%코드를 사용하여 사용자 정의 분류 이름 위에 코드 대신%%
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.