사용자 정의 게시물 유형 영구 링크에 대한 모든 질문을 파헤 쳤지 만 대부분 사용자 정의 분류법 다시 작성에 문제가 있거나 flush_rewrite_rules ()가 누락 된 것 같습니다. 그러나 필자의 경우에는 메타 박스 등의 속성에 대한 적절한 "지원"을 사용하여 계층 적 (부모-자식 관계를 지정할 수 있음)으로 설정된 사용자 정의 게시물 유형 (분류 없음) 만 사용하고 있습니다. 다시 쓰기 규칙을 수천 가지 방법으로 플러시했습니다. 다른 퍼머 링크 구조를 시도했습니다. 그러나 자식 URL은 항상 404입니다.
원래 "parent"및 "child"요소 (p2p 사용)에 대해 독립적 인 사용자 지정 게시물 유형이 있었으며 "parental"그룹화를 위해 분류법을 사용하는 데 아무런 어려움이 없었을 것입니다. 그러나 클라이언트의 경우 페이지와 같이 관리자에 "게시물"이 표시 될 때 계층 구조를 시각화하는 것이 가장 쉽습니다. 하위 항목이 부모 아래에 나타나고 접두사 "-"가있는 간단한 트리 적절한 순서. 또한 드래그 앤 드롭을 통해 순서를 지정하는 다양한 방법을 사용할 수 있습니다. 분류 체계 (또는 p2p)를 통해 그룹화하면 관리자 목록에 "게시물"이 단순하게 표시됩니다. 이는 시각적으로 명확하지 않습니다.
따라서 내가 따르는 것은 말 그대로 핵심 "페이지"와 정확히 동일한 동작이지만 내 맞춤 게시물 유형입니다. 게시물 유형을 예상대로 등록했으며 관리자가 완벽하게 작동합니다. 각 뉴스 레터 "게시물"에 대해 부모 및 menu_order를 지정할 수 있습니다. 편집 목록에 올바르게 나타납니다.
Spring 2012
— First Article
— Second Article
그리고 그들의 영구 링크 는 제대로 구성되어있는 것 같습니다. 사실, 게시물 유형을 등록 할 때 구조에 대해 변경하거나 재 작성 슬러그를 변경하면 자동으로 올바르게 업데이트되므로 작동하는 것을 알고 있습니다.
http://mysite.com/parent-page/child-page/ /* works for pages! */
http://mysite.com/post-type/parent-post/child-post/ /* should work? */
http://mysite.com/newsletter/spring-2012/ /* works! */
http://mysite.com/newsletter/spring-2012/first-article/ /* 404 */
http://mysite.com/newsletter/spring-2012/second-article/ /* 404 */
또한 계층 적 관계가 생성 된 표준 핵심 "페이지"가 있으며 관리자에서 동일하게 보이지만 실제로는 프런트 엔드에서도 작동합니다 (부모 및 자식 URL 모두 잘 작동 함).
내 퍼머 링크 구조는 다음과 같이 설정됩니다.
http://mysite.com/%postname%/
나는 또한 이것을 시도했다. (나의 경우에는 의미가 없지만 다른 많은 답변이 필요하다는 것을 나타내는 것처럼 보였기 때문에) :
http://mysite.com/%category%/%postname%/
내 등록 CPT 인수에는 다음이 포함됩니다.
$args = array(
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'has_archive' => 'newsletter',
'hierarchical' => true,
'query_var' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'page-attributes' ),
'rewrite' => array( 'slug' => 'newsletter', 'with_front' => false ),
내 맞춤 게시물 유형 하위 와 일반 페이지 하위 사이의 유일한 눈에 띄는 차이점은 CPT가 permalink 구조의 시작 부분에 슬러그가 있고 그 다음에 부모 / 자식 슬러그 (페이지가 부모 / 자식 슬러그로 시작 함)가 있다는 것입니다. "접두사"없음). 왜 이런 일이 일어 났는지 모르겠습니다. 많은 기사들이 이것이 그러한 계층 적 CPT 퍼머 링크가 정확히 어떻게 동작해야하는지 나타내는 것으로 보이지만, 잘 형성되어 있지만 작동하지 않습니다.
또한 404 페이지에 대해 query_vars를 검사 할 때 문제가되는 것은 자식 페이지를 "찾기"위해 WP에 대한 올바른 값을 포함하고있는 것으로 보이지만 작동하지 않습니다.
$wp_query object WP_Query {46}
public query_vars -> array (58)
'page' => integer 0
'newsletter' => string(25) "spring-2012/first-article"
'post_type' => string(10) "newsletter"
'name' => string(13) "first-article"
'error' => string(0) ""
'm' => integer 0
'p' => integer 0
'post_parent' => string(0) ""
'subpost' => string(0) ""
'subpost_id' => string(0) ""
'attachment' => string(0) ""
'attachment_id' => integer 0
'static' => string(0) ""
'pagename' => string(13) "first-article"
'page_id' => integer 0
[...]
나는이 부분을 잃어버린 템플릿이 아닌지 확인하기 위해 스물 열두 가지를 포함한 다양한 테마로 이것을 시도했습니다.
Rewrite Rules Inspector를 사용하면 다음 URL에 표시됩니다. http://mysite.com/newsletter/spring-2012/first-article/
newsletter/(.+?)(/[0-9]+)?/?$
newsletter: spring-2012/first-article
page:
(.?.+?)(/[0-9]+)?/?$
pagename: newsletter/spring-2012/first-article
page:
다른 관리자 페이지에 표시되는 방법 :
RULE:
newsletter/(.+?)(/[0-9]+)?/?$
REWRITE:
index.php?newsletter=$matches[1]&page=$matches[2]
SOURCE:
newsletter
이 재 작성 출력은 다음과 같은 "예쁜"퍼머 링크가 작동한다고 믿게 만들 것입니다.
http://mysite.com/?newsletter=spring-2012&page=first-article
404는 아니지만 자식이 아닌 부모 CPT 항목 "뉴스 레터"를 표시합니다. 요청은 다음과 같습니다.
Array
(
[page] => first-article
[newsletter] => spring-2012
[post_type] => newsletter
[name] => spring-2012
)
post_name
열에 충돌이 없습니다 .