맞춤 게시물 유형 URL을 다시 작성 하시겠습니까?


32

포트폴리오 프로젝트에 대한 사용자 정의 게시물 유형을 설정했습니다. 이것에 대한 기본 URL은/projects/

이제 블로그 링크에 /articles/*/퍼머 링크 구조를 설정했습니다. 이것은 포트폴리오 프로젝트를 보러 갈 때 URL이/articles/projects/project-name/

내 프로젝트 사용자 정의 게시물 유형에 대해서만 퍼머 링크를 다시 작성할 수있는 방법이 있어야한다는 것을 알고 있습니다 . 그러나 URL 슬러그를 선언하는 구문에 익숙하지 않습니다. 도움을 주시면 감사하겠습니다.

답변:


42

사용자 정의 게시물 유형을 등록 할 때 재 작성 규칙 앞에 기존 URL 구조가 붙지 않도록 지정해야합니다.

요컨대, 이것은 귀하의 register_post_type전화 에서 다음 줄을 의미합니다 .

'rewrite' => array('slug' => 'projects'),

이것으로 바꿔야합니다 :

'rewrite' => array('slug' => 'projects','with_front' => false),

자세한 내용 rewrite코덱 항목 의 인수를 확인하십시오 .register_post_type

편집 : 코드를 업데이트 한 후 설정> 영구 링크를 방문하여 다시 쓰기 규칙을 플러시하십시오. 그렇지 않으면 여전히 이전 링크가 표시됩니다.


화려한 감사합니다! 명확히하기 위해, 플러시 규칙에 필요한 것은 설정-> 퍼머 링크 페이지로 가서 "변경 사항 저장"을 누르는 것입니다. 맞습니까?
Jake

4
변경 사항을 저장할 필요조차 없습니다. Permalinks 설정 페이지를 여는 것만으로 충분합니다 (즉, .htaccess 파일이 쓰기 가능한 경우입니다. 그렇지 않은 경우 변경 사항 저장을 누르고 .htaccess에 반환 된 코드를 수동으로 복사하십시오)
0x61696f

2
이것은 나를 위해 작동하지 않는 것 같습니다. 내 프로젝트 게시물은 여전히갑니다 example.com/projects/title-of-post. Permalinks 페이지도 방문했습니다. 이 문제의 원인은 무엇입니까? 내에 다시 쓰기 규칙이 없습니다 htaccess.
Desi

와우, 그것은 빠진 부분이었습니다! permalinks 페이지를 방문하는 것은 효과가 없었지만, 현재 permalink 설정을 저장하는 것은 효과가
있었습니다.

다시 쓰기 규칙을 지우지 않고 계속 변경했습니다. 팁 고마워!
Tan-007

15

나는 3 일 전에 말 그대로이 문제가 있었으며 wp.tutsplus.com 에서 시리즈를 우연히 발견 했습니다 . 귀하의 질문을 더 잘 수용하기 위해 내 코드를 교체했지만이 시리즈를 따른 후에 끝났습니다. 또한 이것은 테스트되지 않았 음을 명심하십시오.

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','description' => '',
       'public' => true,
       'show_ui' => true,
       'show_in_menu' => true,
       'capability_type' => 'post',
       'hierarchical' => false,
       'publicly_queryable' => true,
       'rewrite' => false,
       'query_var' => true,
       'has_archive' => true,
       'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
       'taxonomies' => array('category','post_tag'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

이론적으로 $projects_structure변수에 저장된 URL에서 원하는 것을 바꿀 수 있습니다. 내가 사용한 것은 무엇입니까?

행운을 빕니다. 그리고 언제나 그렇듯이 – 돌아와서 어떻게 작동했는지 알려주세요! :)


1
링크로 구성된 답변은 일반적으로 해당 리소스가 미래에 더 이상 존재하지 않을 수 있으므로 도움이되지 않는 것으로 간주됩니다. 내용을 요약하십시오.
chrisguitarguy 16:25에

공평하게, 나는 적절한 수정을 위해 노력할 것입니다.
cmegown

11
이제 내 답변에는 사용자 정의 게시물 유형 URL을 성공적으로 다시 작성하는 프로덕션 환경에있는 작업 코드와 유사한 코드가 포함되어 있습니다. 그것이 더 도움이되기를 바랍니다!
cmegown
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.