경로를 첨부 파일로 인식하는 WordPress 비활성화
1 대답
- 투표
기본perma 구조와이를 수정하는 방법에 대해 조금 더 알게 된 후 rewrite_rules_array
후크를 발견했습니다. 이 후크를 사용하면로드 할 콘텐츠 유형을 결정하는 데 도움이되는 WordPress의 URL 재 작성 규칙 배열 인 재 작성 규칙 배열을 필터링 할 수 있습니다.
경로를 첨부 파일로 인식하기위한 기본 동작을 비활성화 할 수있는 좋은 위치입니다. 이렇게하면 첨부 파일에 대한 모든 재 작성 규칙을 제거하여 경로를 첨부 파일로 인식하는 모든 동작을 제거 할 수 있습니다.
add_filter('rewrite_rules_array', function($rules) {
foreach ($rules as $rule => $url) {
if (strpos($url, 'attachment') !== false) {
unset($rules[$rule]);
}
}
return $rules;
});
다른 모든 규칙에 대해 잘 모르겠으며 모두 확인하고 싶습니다. 예를 들면 다음과 같습니다.
"(.?.+?)(?:/([0-9]+))?/?$" => "index.php?pagename=$matches[1]&page=$matches[2]"
"([^/]+)(?:/([0-9]+))?/?$" => "index.php?name=$matches[1]&page=$matches[2]"
페이지를 인식하는 데 도움이되며 페이지 만 사용하려는 경우 매우 유용합니다. 그러나 이러한 키/값만 사용하여 배열을 다시 작성하면 사용자 지정 게시물 유형에 대한 예제 규칙에 대한 새 규칙도 다시 작성 (제거)됩니다.
참고 : 이 필터 디버깅은 WordPress 백엔드의 설정> 영구 링크 페이지에서만 가능합니다.
After getting to know a bit more about the default perma structure and how to modify it I stumbled upon the hook rewrite_rules_array
. This hook allows you to filter the array of rewrite rules, an array of URL rewrite rules in WordPress what will help determine what type of content to load.
This is a great place to disable the default behavior for recognizing the path as attachment. This is how you get rid of all rewrite rules for attachments, thus all the behavior for recognizing a path as attachment.
add_filter('rewrite_rules_array', function($rules) {
foreach ($rules as $rule => $url) {
if (strpos($url, 'attachment') !== false) {
unset($rules[$rule]);
}
}
return $rules;
});
I'm not sure about all other rules and I definitely want to check them all out. These for example:
"(.?.+?)(?:/([0-9]+))?/?$" => "index.php?pagename=$matches[1]&page=$matches[2]"
"([^/]+)(?:/([0-9]+))?/?$" => "index.php?name=$matches[1]&page=$matches[2]"
Will help you recognize pages, very useful to know if you only want to use pages. But remember if you rewrite the array with only these keys/values then new rules for example rules for your custom post type will also be rewritten (removed).
NOTE: Debugging this filter is only possible on the Settings > Permalinks page in the WordPress back-end.
존재하지 않는 두 개의 경로 세그먼트가있는 URL을 입력 할 때마다 WordPress는 자동으로 쿼리를 첨부 파일로 구문 분석합니다.
재현 방법
/%postname%/
로 변경합니다./foo/bar
"foo"가 기존 분류 또는 게시물 유형이 아닌지 확인합니다.pre_get_posts
를 살펴보고global $wp_query
를 덤프합니다.post_type = 'attachment'
를 쿼리 및 기타 첨부 파일 관련 정보에 추가하므로 URL을 첨부 파일로 구문 분석하려고합니다.참고 : 2 단계와 5 단계에서 언급 한 내용이 확실하지 않습니다.
왜 신경 쓰나요?
이 기본 동작을 처리하는 것이 매우 성가신 것을 발견했으며 어떻게 든 비활성화하고 싶습니다. 방법을 알고 있다면 알려주십시오. 특정 영구 링크 구조를 달성하는 것이 불가능합니다. 당신이 아마 알고 싶은 곳. 나는 현재 포스트 슬러그가 슬러그라는 용어로 접두사 인 영구 링크 구조를 달성하려고합니다. 예를 들어 포스트 유형 'example'에는 슬러그 'foo'와 관련된 용어와 관련된 포스트 'bar'가 있습니다. 퍼머 링크 'example/bar'를 정의하는 대신 'foo/bar'로 정의해야합니다.