워드프레스: Special characters must be escaped 오류

워드프레스 정보를 제공하는 블로그 Avada 2023. 9. 30. 00:12 • 댓글:

GeneratePress 테마가 설치된 워드프레스 사이트에 관련 글 관련 PHP 코드를 Element로 추가할 때 "Special characters must be escaped : [ < ]" 오류가 발생하는 문제에 대한 질문이 네이버 카페에 최근 올라온 적이 있습니다. 보통 GeneratePress 테마의 Elements를 사용하여 PHP 코드를 추가하더라도 문제가 발생하지 않습니다. 이런 문제가 발생할 경우 확인할 사항과 우회 방법에 대하여 살펴보겠습니다.

워드프레스: Special characters must be escaped 오류

워드프레스 제너레이트프레스 유료 버전을 사용하는 경우 Elements 모듈을 사용하여 대시보드(알림판)에서 PHP 코드를 원하는 곳에 추가할 수 있습니다.

"워드프레스 관련 글 목록 표시하기 (GeneratePress 테마)" 글에서는 동일 카테고리 내의 다른 글을 "관련 글"로 표시하는 코드가 소개되어 있습니다.

상기 글에 포함된 코드를 새로운 훅(Hook)을 만들어 추가하려고 시도할 때 아래 그림과 같이 공백 부분이 오류를 일으키면서 느낌표 기호와 X 기호가 표시되고 있습니다.

워드프레스: Special characters must be escaped 오류

공백(Space) 대신 탭(Tab)을 사용하면 느낌표 경고 아이콘이 사라지지만 "Special characters must be escaped : [ < ]" 에러 메시지가 표시된다고 하네요.

워드프레스: Special characters must be escaped 에러

경고가 표시되지만 코드는 작동한다고 합니다.

이와 비슷한 문제를 외모 » 사용자 정의하기 » 추가 CSS에 코드를 복사하여 붙여넣기 할 때 발생하는 것을 경험한 적이 있습니다.

처음에는 웹호스팅 업체인 클라우드웨이즈(Cloudways)의 방화벽 등의 문제로 인해 발생하는 것은 아닌지 의심이 되었지만, 클라우드웨이즈에 호스팅 중인 다른 워드프레스 사이트에서 테스트하니 문제가 발생하지 않았습니다.

Special characters must be escaped 에러 발생 시 대처 방법

서식 없이 코드 붙여넣기

개인적으로는 코드를 복사하여 붙여넣기 하는 과정에서 이상한 문자가 유입되거나 문자가 손상되어 발생하는 것이 아닐까 추정하지만 개인적인 생각일 뿐입니다.

코드를 복사하여 붙여넣기 할 때 크롬이나 MS 엣지 브라우저의 경우 [**Ctrl+Shift+V**] 단축키를 사용하여 붙여넣기 하면 서식 없이 텍스트를 붙여넣기 할 수 있습니다.

크롬이나 엣지 브라우저에서 "일반 텍스트로 붙여넣기"하면 서식 없이 텍스트를 붙여넣기 할 수 있습니다.

이 방법으로 문제가 해결되는지 체크해 보시기 바랍니다.

선행공백/후행공백 제거하기

비슷한 맥락에서 선행 공백이나 후행 공백 때문에 문제가 발생하는 것으로 의심이 된다면 선행/후행 공백 제거 툴을 사용하여 선행 공백과 후행 공백을 제거한 후에 붙여넣기 할 수 있습니다.

다음 페이지의 툴을 사용하여 선행/후행 공백을 삭제할 수 있습니다.

 

선행공백/후행공백 제거하기 - 워드프레스 정보꾸러미

선행 공백과 후행 공백을 제거하는 무료 툴입니다. 공백을 제거할 텍스트를 입력하면 선행/후행 공백을 제거할 수 있습니다.

www.thewordcracker.com

브라우저 익스텐션 비활성화/삭제하기

종종 브라우저의 익스텐션이 문제를 일으키는 경우가 있습니다. 다른 브라우저(예: 파이어폭스 등)에서 사이트에 로그인하여 시도해 보고, 크롬 브라우저를 사용하는 경우 브라우저 익스텐션들을 비활성화한 후에 시도해 볼 수 있습니다.

참고로 은행 앱들도 문제를 일으킬 수 있습니다. 은행 사이트나 신용카드 사이트에 로그인할 때 보안을 위해 설치되는 은행 프로그램들은 오히려 보안에 문제를 일으킬 수 있고, 워드프레스 관리자 페이지 속도를 느리게 할 수도 있습니다. 은행 앱은 구라제거기 같은 프로그램을 사용하여 삭제할 수 있습니다.

보안 플러그인 비활성화하기

보안 플러그인 때문에 PHP 코드를 알림판을 통해 추가하지 못하게 차단될 수도 있습니다. 또한, 방화벽 관련 플러그인이 설치되어 있다면 방화벽 플러그인도 비활성화합니다.

.htaccess 파일이 손상되는 경우에도 이상한 현상이 발생할 수 있으므로 FTP/SFTP에 접속하여 .htaccess 파일이 손상되지 않았는 지도 체크해 보세요.

워드프레스 사이트를 최신 버전으로 업데이트하기

워드프레스 사이트가 최신 버전이 아닐 경우에도 예상치 못한 에러가 발생할 수 있습니다. 워드프레스 코어, 테마, 플러그인을 최신 버전으로 업데이트하여 시도해 보세요.

가능하면 백업을 한 후에 업데이트를 진행하면 안전합니다.

플러그인 비활성화

워드프레스에서 많은 문제가 플러그인 충돌일 수 있습니다. 필수 플러그인만 남겨 두고 모든 플러그인을 비활성화한 후에 문제가 재발하는지 체크할 수 있습니다.

모든 플러그인을 비활성화했을 때 문제가 발생하지 않는 경우에는 하나씩 활성화하면서 문제를 일으키는 플러그인을 찾도록 합니다.

웹호스팅 방화벽 문제

웹호스팅 업체에서 보안을 위해 특정 코드를 워드프레스 관리자 페이지를 통해 입력하지 못하도록 차단할 수도 있습니다. 웹호스팅 업체에 연락하여 호스팅 업체의 방화벽 때문에 이와 같은 에러가 발생하는지를 체크해 보시기 바랍니다.

다른 방법: 코드를 테마 함수에 추가하기

상기의 모든 방법으로 문제를 해결할 수 없다면 코드를 테마의 함수 파일에 추가하면 문제가 발생하지 않을 것입니다.

차일드 테마를 만들어서 코드를 차일드 테마 내의 함수 파일에 추가할 수 있습니다. 

"워드프레스 관련 글 목록 표시하기 (GeneratePress 테마)" 글에 제시된 코드를 사용하려는 경우 "숏코드로 추가하는 방법"에 소개된 코드를 이용하거나 GeneratePress 테마의 훅(hook)을 사용하여 코드를 넣는 방법도 가능합니다. 훅을 이용하여 코드를 넣으려면 PHP의 기본 문법에 대하여 조금 알아야 가능할 것입니다.

참고

https://avada.tistory.com/2897

 

엘리멘터 무료 버전 vs. 프로 버전 비교

엘리멘터(Elmentor)는 500만 개가 넘는 사이트에 설치되어 사용되고 있는 인기 워드프레스 페이지 빌더 플러그인입니다. 엘리멘터는 무료 버전과 프로 버전으로 제공됩니다. Elementor 프로 버전에서

avada.tistory.com

https://avada.tistory.com/3046

 

해외웹호스팅: 클라우드웨이즈 vs. 블루호스트 비교 (Cloudways vs. Bluehost)

저는 오랫동안 블루호스트(Bluehost)를 이용해 왔으며 2021년부터는 클라우드웨이즈(Cloudways) 웹호스팅 서비스도 함께 이용하고 있습니다. 현재 메인 워드프레스 블로그는 Bluehost에서 호스팅되고 있

avada.tistory.com

 

워드프레스 네이버 카페