"visningshus"라는 사용자 정의 게시물 유형과 해당 슬러그가있는 페이지가 있습니다. 이것은 (필수)해야합니다.
현재 " http://my-site.com/visningshus "는 해당 유형의 모든 게시물을 나열합니다. 해당 영구 링크 슬러그가있는 페이지를 대신 표시하고 싶습니다.
Wordpress가 게시물 유형 이름을 우선하지 않고 영구 링크를 만들고 페이지를 표시하도록하려면 어떻게해야합니까?
"visningshus"라는 사용자 정의 게시물 유형과 해당 슬러그가있는 페이지가 있습니다. 이것은 (필수)해야합니다.
현재 " http://my-site.com/visningshus "는 해당 유형의 모든 게시물을 나열합니다. 해당 영구 링크 슬러그가있는 페이지를 대신 표시하고 싶습니다.
Wordpress가 게시물 유형 이름을 우선하지 않고 영구 링크를 만들고 페이지를 표시하도록하려면 어떻게해야합니까?
답변:
가장 쉬운 방법은이 CPT에 대한 보관 페이지를 비활성화하는 것입니다.
register_post_type( 'visningshus',
array(
[...]
'has_archive' => false,
[...]
)
);
"설정> 영구 링크" 에서 나중에 영구 링크를 새로 고치는 것을 잊지 마십시오.
나는 @Carl의 게시물에 대해 언급 할만 큼 평판이 좋지 않지만 그의 대답은 (적어도 페이지 슬러그 와 사용자 정의 게시물 유형 슬러그 를 동일 하게 유지하고 archive.php 파일을 사용하지 않는 상황)
그러나 그의 대답은 페이지 매김에 오류를 줄 것입니다. 페이지 매김 오류를 피하려면
add_rewrite_rule('^visningshus/page/([0-9]+)','index.php?pagename=visningshus&paged=$matches[1]', 'top');
페이지 매김을보고 페이지 번호를 가져온 다음 반대쪽에서 일치하는 슬러그가있는 페이지를 사용하도록 한 다음 페이지 변수를 삽입합니다.
이것은 추가 로 'has_archive' => false,
위의 게시 원하는 기능을 수행한다.
다른 사람들이 언급 했듯이이 변경을 한 후에 설정> 영구 링크를 방문하여 다시 쓰기 규칙을 플러시하십시오.
나는 이것이 정말 오랫동안 나를 혼란스럽게했기 때문에 이것이 누군가를 돕기를 바랍니다.
Tjena Henrik!
이미 작성한 Wordpress Rewrite 규칙에 다시 쓰기 규칙을 추가하기 만하면됩니다. 이 코드 스 니펫을 테마의 functions.php에 추가하거나 별도의 pugin으로 포함하십시오 ...
add_action('init', function () {
add_rewrite_rule('visningshus/?$','index.php?pagename=visningshus', 'top');
flush_rewrite_rules();
}, 1000);
flush_rewrite_rules();
다시 쓰기 규칙을 변경해서는 안됩니다 init
. 한 번 다시로드 한 다음 제거하거나 관리 대시 보드의 퍼머 링크 설정으로 이동하여 "변경 사항 저장"을 클릭하여 퍼머 링크를 수동으로 플러시
갈등을 해결하지 않고 해결했습니다. 슬러그 visningshus와 함께 페이지를 만들고 원하는 것을 쓰십시오. 이 페이지의 ID를 기록해 두십시오.
원하는 방식으로 archive-custom-post-type.php 템플릿을 만들고 사용자 지정하지만 (페이지 템플릿을 사용하는 경우가 많음) 루프 부분을
$recent = new WP_Query("page_id=your-page-id");
while($recent->have_posts()) : $recent->the_post();
the_content();
endwhile;
그런 다음 http://my-site.com/visningshus 로 이동 하면 페이지에서 올바른 URL로 관리되는 콘텐츠가 표시됩니다.
작동하는지 알려주세요.
투표가 허용되지 않지만 Carls 솔루션의 경우 +, register_post_type은
'has_archive' => false
단순한. 그러나 페이지 매김 문제가 발생하면
add_rewrite_rule
나를 위해 고쳐진 것은 아카이브를 false로 설정했지만 사용자 정의 게시물 유형을 설정할 때 계층을 false로 설정하는 것입니다!
다음은 모든 사용자 정의 게시물 유형 슬러그에 대한 사용자 정의 게시물 유형 콘텐츠보다 페이지 매김의 우선 순위를 지정하는 일반적인 솔루션입니다.
// prioritize pagination over displaying custom post type content
add_action('init', function() {
add_rewrite_rule(
'(.?.+?)/page/?([0-9]{1,})/?$',
'index.php?pagename=$matches[1]&paged=$matches[2]',
'top'
);
});
이 스 니펫을 추가하는 것 외에도 맞춤 게시물 유형이 archive = false
마지막으로 Permalinks 설정 페이지 설정> Permalinks (/wp/wp-admin/options-permalink.php) 로 이동하여 현재 설정을 저장하여 페이지의 링크 구조를 새로 고칩니다.