2011-10-11 4 views
6

나는 택 소노 미의 하나를 포함하는 사용자 정의 유형에 대한 영구 링크 패턴을 만들려고합니다. 택 소노 미의 이름은 처음부터 알려져 있기 때문에 (물론 특정 택 소노 미를 모두 추가하거나 섞어서는 안된다.) 물론 값은 동적 인 것이다.Wordpress 사용자 정의 유형 permalink 분류학 슬러그

보통 맞춤 유형 퍼머 링크는 rewrite 매개 변수와 함께 slug 매개 변수를 사용하여 만들어졌지만 거기에 동적 변수를 추가하는 방법을 알지 못합니다.

http://codex.wordpress.org/Function_Reference/register_post_type

나는 사용자 지정 솔루션이 필요 같은데요,하지만 난 최선 성도 높아 접근 방식이 어떻게 될지 모르겠어요.

알려진 연습이 있습니까? 아니면 최근에 비슷하게 만들어진 사람이 있습니까? WP 3.2.1 btw를 사용하고 있습니다.

답변

3

더 많은 검색 후에 나는 custom_post_link 필터를 사용하여 상당히 우아한 솔루션을 만들 수있었습니다.

project 사용자 정의 유형이 client 분류라고 가정 해 보겠습니다. 이 후크 추가

'rewrite' => array('slug' => '%client%') 

내가 요청하기 전에 더 깊이 파고해야 생각하지만, 적어도 우리가 완전한 있습니다 사용자 정의 유형을 등록 할 때 다음

function custom_post_link($post_link, $id = 0) 
{ 
    $post = get_post($id); 

    if(!is_object($post) || $post->post_type != 'project') 
    { 
    return $post_link; 
    } 
    $client = 'misc'; 

    if($terms = wp_get_object_terms($post->ID, 'client')) 
    { 
    $client = $terms[0]->slug; 

    //Replace the query var surrounded by % with the slug of 
    //the first taxonomy it belongs to. 
    return str_replace('%client%', $client, $post_link); 
    } 

    //If all else fails, just return the $post_link. 
    return $post_link; 
} 

add_filter('post_type_link', 'custom_post_link', 1, 3); 

를,이 같은 rewrite 인수를 설정 지금 해결책.

+0

고마워요! 이것은 나를 위해 일했다. 내'.htaccess' 파일이 쓰기 가능한지 확인한 다음 제대로 설정하려면'Settings> Permalinks'와'Save Changes'로 들어가야 만했습니다. 'add_filter ('post_type_link', 'custom_post_link', 1, 3)에서'1'과'3'은 무엇입니까? 다시 한 번 감사드립니다! –

+0

나는 모든 것이 작동한다고 생각했지만, 이제는 모든 정규/비 사용자 포스트 유형 게시물에서 404 오류가 발생합니다. 나는 그것에 대해 어떤 생각이라도 있으면 이것에 관한 질문을 올렸다 : http://stackoverflow.com/questions/9722984/wordpress-custom-permalink-with-dynamic-taxonomy-for-custom-post-type. –

+0

'get_the_terms'가 결과를 캐시하므로 'wp_get_object_terms'대신 'get_the_terms'를 강력하게 사용하는 것이 좋습니다. 'wp_get_object_terms'를 사용하면 'post_link'필터가 실행될 때마다 해당 쿼리가 실행됩니다. 이는 포스트 편집 화면에서 10 번과 같습니다. Ref https://core.trac.wordpress.org/browser/tags/3.9.1/src/wp-includes/category-template.php#L1238 – TomHarrigan

관련 문제