참고 : 이것은 불완전한 답변으로 점진적으로 확장 될 것입니다
멀티 사이트에서 재 작성 규칙을 플러시 할 수있는 신뢰할 수있는 유일한 방법은 기본 및 / 또는 다른 블로그 컨텍스트의 퍼머 링크 구조를 손상시키지 않으면 서 (어떻게 어떻게 전환하는지에 따라) 주어진 컨텍스트에서 재 작성 규칙을 플러시하는 것입니다. :
global $wp_rewrite;
$wp_rewrite->init(); //important...
$wp_rewrite->flush_rules();
위의 내용은 다시 쓰기 규칙을 구성하고 데이터베이스에 변경 사항을 커밋하기 전에 주어진 컨텍스트에 대한 올바른 퍼머 링크 구조가 검색 및 설정되도록합니다.
하나의 컨텍스트 만 있기 때문에 컨텍스트가 중요하지 않은 단일 사이트에는 적용되지 않습니다.
flush_rewrite_rules()
제 생각에는 올바른 맥락을 가정한다는 전제에 결함이 있지만 switch_to_blog
, 규칙을 플러시하려고 할 때 상황을 완전히 바꾸고 위험한 지역에 남겨 두는 우리 의 사용을 고려하지 않습니다 .
내부는 flush_rewrite_rules()
다음과 같습니다.
function flush_rewrite_rules( $hard = true ) {
global $wp_rewrite;
$wp_rewrite->flush_rules( $hard );
}
왜 이렇게 보이지 않아야하는지 이유를 생각할 수 없습니다.
function flush_rewrite_rules( $hard = true ) {
global $wp_rewrite;
$wp_rewrite->init(); //hello....
$wp_rewrite->flush_rules( $hard );
}
... 특히 생성자 WP_Rewrite
가 무엇 을한다고 생각할 때 ? 이 일을 ...
public function __construct() {
$this->init();
}
이 라인을 더 발전시키기 위해 첫 번째 관심사를 다루면서
따라서 다중 사이트 에서 플러그인이 다시 쓰기 규칙을 안정적으로 플러시하는 방법은 무엇 입니까 ?
이 과정에서 워드 프레스 코어가 주목할만한 사항을 살펴 보자.
- 먼저
wpmu_create_blog()
- 그런 다음 호출
install_blog()
하여 차례로 호출populate_options()
- 다음
populate_options()
옵션을 테이블에 기본 퍼머 구조를 설정
- 후
install_blog()
달렸다을 가지고, wp_install_defaults()
다음 호출되는
- 그런 다음을
wp_install_defaults()
통해 현재 블로그로 다시 전환하기 전에 새로 만든 사이트에 대한 다시 쓰기 규칙 을 플러시합니다 restore_current_blog()
.
중요한 것은 wp_install_defaults()
위에서 위에서 제안한대로 규칙 을 플러시 한다는 것입니다.
$wp_rewrite->init();
$wp_rewrite->flush_rules();
... permalink_structure
현재 컨텍스트에 대해 올바른 규칙이 작성 되었는지 확인하는 유일한 방법이기 때문입니다 .
또한 Github 문제 내에서 입증 된 문제 에서 사용자가 다음과 같은 동작을 경험 한 이유는 다음과 같습니다.
새 사이트를 만들면 최상위 사이트에서만 게시물 수준 퍼머 링크가 끊어집니다.
이 두 형식은 올바르게 작동합니다.
기본값-예상대로 작동
요일 및 이름-예상대로 작동
... 기본 블로그에 Day & Name Permalink 구조 /%year%/%monthnum%/%day%/%postname%/
가있는 경우 새 사이트가 작성 될 때 /%year%/%monthnum%/%day%/%postname%/
기본적으로 Day & Name Permalink 구조 가 있으므로 Yoast SEO 플러그인이 다시 쓸 때 눈에 띄는 문제가 발생하지 않습니다. shutdown
후크 규칙 .