맞춤 게시물 유형 및 분류법에 대한 퍼머 링크 구조를 변경하는 방법은 무엇입니까?


11

이것은 내가 가지고 있었던 이전 질문의 다시 게시 된 것입니다. 그러나이 문제를 완전히 해결하기 위해 더 자세한 내용을보고 싶습니다.

다시 말하지만 (일반) 게시물을 사용하여 영구 링크를 변경하는 것은 설정> 영구 링크로 이동하고 광범위하게 사용되는 것과 같이 원하는 것을 변경하는 것만 큼 쉽습니다 %category%/%postname%.html. 이 모든 것이 작동합니다. 이것이 맞춤 게시물 유형만큼 쉬웠고 분류법도 마찬가지였습니다.

이것이 내가 성취하고 싶은 것입니다.

  1. http://mywordpress.com/portfolio.html- 모든 카테고리의 모든 게시물을 표시합니다.
  2. http://mywordpress.com/portfolio/music/- 이 카테고리의 모든 게시물을 표시합니다.
  3. http://mywordpress.com/portfolio/music/trance/- 이 하위 카테고리의 모든 게시물을 표시합니다.
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html- 게시물을 표시합니다.

내가 지금까지 얻은 것은 다음과 같습니다.

  1. 먼저 custom_post_type명명 된 프로젝트taxonomy project_category를 만들었습니다 .
  2. 페이지 포트폴리오를 작성하고 모든 post_type = project게시물을 나열하는 페이지 템플리트를 제공했습니다 . 페이지의 퍼머 링크에 .html을 어떻게 추가 할 수 있습니까? 지금에 링크 http://mywordpress.com/portfolio 내가 원하는 동안 http://mywordpress.com/portfolio.html을 . 이것은 첫 번째 문제를 해결해야합니다.
  3. 그러면 하위 카테고리가 몇 개나 있는지 알 수 없기 때문에 어려울 것입니다. 아마도 없을 수도 있습니다. 따라서 우리가 따르는 구조는입니다 portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html. 나는 여전히이 시점에서 붙어 있습니다. 어떻게 든 마지막 카테고리를 경로에 추가하고 project_category 따라 전달 해야합니다.이를 올바르게 처리 할 수있는 taxonomy.php 파일로 연결해야합니다.
  4. 나는 이것도 다루지 않았지만 무언가 %postname%.html끝에 무언가 관련이 있어야 합니다.

내 문제가 분명하고 용감한 개발자가있어서 4 일 동안 이미 바쁜 상태로 유지 한이 문제를 해결하는 데 도움이되기를 바랍니다.


1
마지막 질문에서 내가 제시 한 솔루션은 올바르게 구현했다면 그렇게 작동했을 것입니다. 유일한 것은 당신이 HTML 부분을 얻을 수 없다는 것입니다
Manny Fleurmond

예. 그러나 특정 경로에 고정되어 있으므로 하위 카테고리가 없거나 더 많은 카테고리 / 하위 카테고리 / 페이지 만 있습니다. 이것은 더 역동적입니다.
Mark

아니면 제대로 구현하지 않았습니다.)
Mark

답변:


4

좋아, 나는 해결책이 있다고 생각한다. 이것이 이것이 올바른 방법인지는 모르겠지만 지금은 그것이 작동하는 것 같습니다.

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}

요청 필터는 카테고리 (실제로)와 게시물을 요청하는 경우 필터링하는 좋은 방법입니다. 게시물이 카테고리, 하위 카테고리인지 여부에 관계없이 하나의 다시 쓰기 규칙 만 추가하고 게시물 페이지를 가져올 수 있습니다.
ZalemCitizen

1

2 가지 방법 :

*이 게시물 하단의 참고 사항을 참조하십시오.


예를 들어, 다음과 같은 퍼머 링크 구조를 원합니다.
/ MAIN_CATEGORY / SUB_CAT_2 / Another_SUBCAT / my-post

처음에는 영구 링크를 / % category % / % postname % 로 설정해야합니다 . 그때...




방법 1 :

(STANDARD 카테고리 생성 MAIN_CATEGORY, SUB_CAT_1, and etc..이 매개 변수를 포함), 및 레지스터 CUSTOM POST :

'taxonomies'    => array('category'..)

다음 코드를 사용하여 영구 링크를 변경 하십시오
.
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



방법 2 :

(ps 수백 또는 수천 개의 게시물을 게시하려는 경우이 방법 은 권장되지 않습니다 )

MAIN_CATEGORY다음 매개 변수를 포함 하여 CUSTOM POST ( )를 등록하십시오 .

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

: 다음과 같이 정의 게시물을 게시 즉, 여러 사용자 정의 게시 ( 이름, 다른 게시물을 게시 할 때 한 후 다음 만 선택합니다. 부모.
SUB_CAT_2, SUB_CAT_1..SUB_CAT_2





ps
1) 초보자 인 경우 CUSTOM POST 등록TAXONOMY에 CUSTOM POST 등록
2) 하위 레벨에 대한 검색 기능이 필요한 경우 사용자 정의 검색 쿼리를 검토하십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.