다른 답변을 잔뜩 결합한 후 작동했습니다! 여기에 어려움을 겪고있는 사람들을위한 해결책이 있습니다.
이 게시물이 와 이 사람은 그 사람 덕분에, 그래서 어떤 날을 도왔다.
이 모든 코드와 초기 사용자 정의 게시물 유형 및 분류법 등록 코드는 functions.php
파일에 포함됩니다.
먼저 사용자 정의 포스트 유형 및 분류 체계를 정의 할 때 바로 슬러그를 얻을 : 사용자 정의 포스트 유형은해야 basename/%taxonomy_name%
하고 분류에 대한 슬러그 그냥해야한다 basename
. 'hierarchical' => true
URL에서 중첩 용어를 얻으려면 분류 재 작성 배열에 추가 하는 것을 잊지 마십시오 . 또한 두 경우 모두 query_var
로 설정되어 있어야 true
합니다.
WordPress에서 URL 구조를 해석하는 방법을 알 수 있도록 새로운 다시 쓰기 규칙을 추가해야합니다. 필자의 경우 uri의 사용자 정의 게시물 유형 부분은 항상 5 번째 uri 세그먼트가되므로 일치 규칙을 적절하게 정의했습니다. URI 세그먼트를 더 많거나 적게 사용하는 경우이를 변경해야 할 수도 있습니다. 다양한 수준의 중첩 용어가있는 경우 마지막 URI 세그먼트가 사용자 정의 게시물 유형인지 또는 분류 규칙 용어인지 여부를 확인하는 함수를 작성해야합니다. 그).
add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules) {
$newRules = array();
$newRules['basename/(.+)/(.+)/(.+)/(.+)/?$'] = 'index.php?custom_post_type_name=$matches[4]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['basename/(.+)/?$'] = 'index.php?taxonomy_name=$matches[1]';
return array_merge($newRules, $rules);
}
그런 다음 %taxonomy_name%
사용자 정의 포스트 유형 재 작성 슬러그 구조 를 처리하는 방법을 워크 프레스가 사용할 수 있도록이 코드를 추가해야합니다 .
function filter_post_type_link($link, $post)
{
if ($post->post_type != 'custom_post_type_name')
return $link;
if ($cats = get_the_terms($post->ID, 'taxonomy_name'))
{
$link = str_replace('%taxonomy_name%', get_taxonomy_parents(array_pop($cats)->term_id, 'taxonomy_name', false, '/', true), $link); // see custom function defined below
}
return $link;
}
add_filter('post_type_link', 'filter_post_type_link', 10, 2);
Wordpress 자체를 기반으로 사용자 지정 함수를 만들었습니다 get_category_parents
.
// my own function to do what get_category_parents does for other taxonomies
function get_taxonomy_parents($id, $taxonomy, $link = false, $separator = '/', $nicename = false, $visited = array()) {
$chain = '';
$parent = &get_term($id, $taxonomy);
if (is_wp_error($parent)) {
return $parent;
}
if ($nicename)
$name = $parent -> slug;
else
$name = $parent -> name;
if ($parent -> parent && ($parent -> parent != $parent -> term_id) && !in_array($parent -> parent, $visited)) {
$visited[] = $parent -> parent;
$chain .= get_taxonomy_parents($parent -> parent, $taxonomy, $link, $separator, $nicename, $visited);
}
if ($link) {
// nothing, can't get this working :(
} else
$chain .= $name . $separator;
return $chain;
}
그런 다음 퍼머 링크를 플러시해야합니다 (퍼머 링크 설정 페이지를로드하기 만하면됩니다).
이제 모든 것이 희망적으로 작동해야합니다! 분류 분류 용어를 작성하여 올바르게 중첩 한 다음 사용자 정의 게시물 유형 게시물을 작성하고 올바르게 분류하십시오. slug로 페이지를 만들 수도 basename
있으며 모든 것이 내 질문에 지정된 방식으로 작동합니다. 사이드 바에 중첩 된 카테고리를 표시하기 위해 사용자 정의 분류 아카이브 페이지를 작성하여 분류 방식 위젯 플러그인을 추가하고 추가하는 방법을 제어 할 수 있습니다 .
희망이 당신을 도와줍니다!