커스텀 포스트 타입의 「전면」슬래그와 같은 타이틀의 WordPress 페이지가 있다.
커스텀 투고 타입이 있습니다.djs
및 커스텀 분류법city
다음 두 가지 용어가 있습니다.boston
그리고.nyc
그래서 DJ는 보스턴이나 뉴욕이라는 꼬리표를 붙일 수 있어요.
DJ 프로파일 (싱글)djs
post)는 다음 위치에 있습니다./nyc-wedding-dj/joe-shmoe/
예를 들어, 보스턴 DJ의 경우,/boston-wedding-dj/jane-doe/
즉, 그 커스텀 포스트 타입의 개서 슬러그는 다음과 같이 설정됩니다.%city%-wedding-dj
.
두 개의 정규 페이지가 있는데/boston-wedding-djs/
그리고./nyc-wedding-djs/
('가 있는 여러 DJ에 주의) 커스텀 페이지 템플릿을 사용하여 해당 도시의 DJ를 루프하고 해당 페이지의 도시에서 DJ 프로파일에 대한 링크 목록을 표시합니다.
내가 하고 싶은 것은 개서 슬러그가%city%-wedding-djs
따라서 커스텀 투고 타입의 단일 페이지는 위에서 언급한 페이지의 하위 페이지로 "구글"됩니다.
단, 커스텀 포스트 타입의 리라이트 슬러그를 변경할 때 충돌이 있습니다.djs
로.%city%-wedding-djs
페이지에 대해 "404 Not Found" (404 Not Found (찾을 수 없음)/boston-wedding-djs/
그리고./nyc-wedding-djs/
.
페이지와 같은 이름의 리라이트 슬러그는 어떻게 가질 수 있나요?
이것은 나에게 다소 관련이 있는 주제에 대한 매튜 보인즈의 훌륭한 블로그 투고를 생각나게 했다.
당신이 설명한 충돌을 피하기 위해 독특한 베이스 슬러그를 사용하는 것이 좋습니다.
WordPress 내에서 이 작업을 수행해야 하는 경우 - 또는 필터를 사용하여 수신 요청을 구문 분석하는 방법을 조정할 수 있습니다.
예:
이것은, 다음의 경우에 체크됩니다.%city%-wedding-djs
페이지가 존재하므로 나중에 도시를 추가할 경우 코드 스니펫을 업데이트할 필요가 없습니다.
! is_admin() && add_filter( 'request', function( $query_vars )
{
if ( isset( $query_vars['city'] ) && ! isset( $query_vars['djs'] ) )
{
$slug = $query_vars['city'] . '-wedding-djs';
// Override if the %city%-wedding-djs page exists
if ( get_page_by_path( $slug ) )
$query_vars['pagename'] = $slug;
}
return $query_vars;
} );
또는 당신이 단지boston
그리고.nyc
해당 페이지가 존재하는지 확인할 필요가 없습니다.
! is_admin() && add_filter( 'request', function( $query_vars )
{
if ( isset( $query_vars['city'] ) && ! isset( $query_vars['djs'] ) )
{
$city = $query_vars['city'];
if ( in_array( $city, array( 'boston', 'nyc' ) ) )
$query_vars['pagename'] = $city . '-wedding-djs';
}
return $query_vars;
} );
즉, 요구는 다음과 같습니다.
example.tld/nyc-wedding-djs/
현재 로서 취급되고 있다.page
,그리고.
example.tld/nyc-wedding-djs/joe-smhoe/
로서djs
포스트.
여기에서는, 다음과 같이 가정합니다.page
재작성 규칙의 priority는 다음보다 낮습니다.djs
포스트 타입
htaccess 를 사용하고 있는 경우는, 이러한 페이지의 리다이렉트를 수동으로 설정할 수 있습니다.이러한 리다이렉트는 올바르게 해결됩니다.다음 행을 추가합니다.
RewriteCond %{REQUEST_URI} ^/boston-wedding-djs/$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/boston-wedding-djs$ [NC]
RewriteRule . index\.php?pagename=boston-wedding-djs [NC,L]
RewriteCond %{REQUEST_URI} ^/nyc-wedding-djs/$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/nyc-wedding-djs$ [NC]
RewriteRule . index\.php?pagename=nyc-wedding-djs [NC,L]
끝나고RewriteRule ^index\.php$ - [L]
WordPress add_rewrite_rule을 사용하여 이 작업을 수행할 수도 있지만 이미 혼란을 겪고 있는 것 같기 때문에 동작 가능성은 낮아 보입니다.
같은 슬러그로 포스트와 페이지를 가질 수 없습니다.
.archive-djs.php
'어쩌면'은single-djs.php
그러면 해당 페이지가 동적으로 표시됩니다.
템플릿 계층에 대해서는 이 페이지를 참조하십시오.
언급URL : https://stackoverflow.com/questions/31621722/have-a-wordpress-page-with-same-title-as-custom-post-type-front-slug
'programing' 카테고리의 다른 글
html 이메일에 이미지 포함 (0) | 2023.02.23 |
---|---|
JSON.stringify 반환 [] (0) | 2023.02.23 |
Angular $http로 다운로드 받은 파일 이름을 얻는 방법 (0) | 2023.02.23 |
Angular에서 php(워드프레스) 함수를 사용하는 방법JS 부분 파일? (0) | 2023.02.23 |
Express/Node.js 및 Angular를 사용하여 취소된 요청 처리 (0) | 2023.02.23 |