맞춤 게시물 유형 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.