다시 쓰기 규칙이 올바르게 플러시되지 않는 이상한 문제가 있습니다.
나는 flush_rewrite_rules();
and을 사용해 보았습니다 flush_rewrite_rules(true);
.
나는 또한 세계화 시도 $wp_rewrite
사용 $wp_rewrite->flush_rules();
하고$wp_rewrite->flush_rules(true);
둘 중 어느 것도 다시 쓰기 규칙을 올바르게 플러시하지 않는 것 같습니다. 이러한 호출은 실제로 호출 될 때 다시 쓰기 규칙을 삭제합니다. 이것을 어떻게 알 수 있습니까? 대한 솔루션을 사용하여 재 작성 규칙 세척 디버깅을 .
현재 플러그인 활성화 및 플러그인 비활성화에 대해 다시 쓰기 규칙이 있습니다. 문제가 없습니다.
사용자가 플러그인을 구성 할 수있는 플러그인 관리 설정 페이지가 있습니다. 일부 설정은 퍼머 링크 구조를 조정하므로 플러그인 관리 설정 페이지 "설정 저장"에서 다시 쓰기 규칙을 삭제해야합니다. update_option();
설정을 저장하기 위해 (표준 사용 ).
지정된 설정에 따라 사용자 지정 게시물 유형이 사용자 지정 설정과 일치하도록 생성됩니다. 따라서 설정을 저장 한 후 다시 쓰기 규칙을 플러시해야합니다. 이것은 제대로 작동하지 않는 곳입니다.
제공되는 다시 쓰기 규칙을 디버깅하기위한 위의 링크 솔루션은 @toscho
수많은 다시 쓰기 규칙을 플러시하고 있음을 표시합니다. 그러나 사용자 정의 게시물 유형 단수 항목 또는 해당 문제에 대한 사용자 정의 게시물 유형 아카이브를 방문하면 각각 404 오류로 반환됩니다.
맞춤 게시물 유형이 올 바르고 적절하게 등록되었습니다. 나는 그것이 문제가 아니라는 것을 알고 있습니다.
플러그인 관리 페이지 설정에 따라 즉시 저장합니다. 사용자 지정 게시물 유형이 생성되고 퍼머 링크 구조가 조정되며 모든 다시 쓰기 규칙을 비 웁니다.
그런 다음 맞춤 게시물 유형은 항상로드되고 init
일반과 같이 로드됩니다 .
어떤 이유로 든, 다시 쓰기 규칙이 올바르게 플러시되지 않습니다. 이전에 말했듯이 사용자 정의 게시물 유형의 단일 또는 아카이브 섹션을 방문하면 404 오류가 발생하기 때문입니다.
이제 이상한 부분은 단순히 관리 permalinks 설정 페이지를 방문한 다음 프런트 엔드로 돌아가서 사용자 정의 게시물 유형의 단일 또는 아카이브 섹션을 보려면 마술처럼 예상대로 작동합니다.
재 작성 규칙을 적절하게 플러시하고 그렇지 않은 관리 퍼머 링크 설정 페이지에서 수행하지 않은 작업은 무엇입니까?
즉, 임시 솔루션으로 플러그인 관리 설정 페이지를 저장 한 후 사용자를 관리 퍼머 링크 설정 페이지로 리디렉션하고 있지만 이상적인 솔루션은 아닙니다. 플러그인 코드 내에서 다시 쓰기 규칙을 올바르게 플러시하는 것이 좋습니다.
다시 쓰기 규칙을 플러시해도 더 이상 모든 규칙을 플러시하지 않는 특정 지점이 WordPress에 있습니까?
admin_menu
-플러그인 설정 페이지가 WordPress 관리에 추가되었습니다.
add_options_page()
-플러그인 설정 페이지가 설정 메뉴에 추가되었습니다.
에 대한 콜백에서 설정 페이지가 렌더링됩니다 add_options_page()
. 또한 $_POST
플러그인 설정 업데이트 및 재 작성 규칙 플러시를 위해 처리됩니다.
이것은 이미 긴 질문이므로 유효한 답변을 생성하는 데 도움이되는 오프 사이트 링크에 코드 블록을 제공하려고합니다.
init
게시물 유형을 등록 하는 클래스가로드되어 있습니다. 페이지 설정이 저장되고 페이지가 다시로드되고 init
후크를 다시 발사하여 필요한 게시물 유형을 등록한다고 생각했습니다. 그래서 게시물 유형이 이미로드 될 것이라고 생각했으며 옵션을 업데이트 한 다음 플러그인 설정 페이지에서 다시 쓰기 규칙을 플러시했습니다. 솔루션을 알아 낸 방법에 대한 답변을 게시합니다.
flush_rewrite_rules
하여rewrite_rules
옵션을 삭제 하고 다시 생성하기 만하면 파일wp-admin/options-permalinks.php
을 열고이 위치를 확인할 수 있습니다 . 이 작업은 전체 옵션을 삭제하기 때문에 규칙을 부분적으로 플러시 할 수 없습니다.