제 블로그를 워드프레스 5.0.3으로 업데이트 하였더니 블로그 본문과 에디터에서 아래와 같은 오류 메세지를 표시하고 있었습니다.
Warning: preg_match() [function.preg-match]: Compilation failed: unrecognized character after (?< at offset 10 in /—/—/—/—/wp-includes/class-wp-block-parser.php on line 418
class-wp-block-praser.php의 418 라인에서 문제가 발생하였고, 해당 라인의 수정 전 내용은 아래와 같았습니다.
$has_match = preg_match(
‘/<!–\s+(?<closer>\/)?wp:(?<namespace>[a-z][a-z0-9_-]*\/)?(?<name>[a-z][a-z0-9_-]*)\s+(?<attrs>{(?:(?:[^}]+|}+(?=})|(?!}\s+\/?–>).)*+)?}\s+)?(?<void>\/)?–>/s’,
$this->document,
$matches,
PREG_OFFSET_CAPTURE,
$this->offset
여기서 (?<xxxx>) 부분을 (?P<xxxx>)로 바꿔주면 문제를 해결할 수 있습니다. 수정 후 내용은 아래와 같습니다.
$has_match = preg_match(
‘/<!–\s+(?P<closer>\/)?wp:(?P<namespace>[a-z][a-z0-9_-]*\/)?(?P<name>[a-z][a-z0-9_-]*)\s+(?P<attrs>{(?:(?:[^}]+|}+(?=})|(?!}\s+\/?–>).)*+)?}\s+)?(?P<void>\/)?–>/s’,
$this->document,
$matches,
PREG_OFFSET_CAPTURE,
$this->offset
오류 수정 관련 후기 및 참고 포스팅
국내 워드프레스 이용자가 적은 편이어서 그런지 구글 한국어 검색을 해봐도 국내 워드프레스 이용자 중에서는 이와 같은 문제 발생에 대한 해결 방법을 명쾌히 올려놓은 게시글을 찾기가 참 어려웠습니다. 오류가 발생한 블로그는 몇군데 찾아볼 수 있었는데 해결방법을 적어놓은 곳은 없더군요.
결국 해외로 눈을 돌렸는데, 다행히 일본의 광고제작회사에서 재직중인 한 일본인 블로거의 블로그 포스팅에 적힌 도움 댓글 덕분에 해결할 수 있었습니다.