WordPress Redeclare error

[워드프레스] Fatal error: Cannot redeclare 오류

개요

워드프레스에서 플러그인이나 테마 혹은 워드프레스 코어 업데이트 후에 다음과 비슷하게 “Fatal error: Cannot redeclare…” 오류가 발생하는 경우:

Fatal error: Cannot redeclare nicdark_add_autocomplete_js() (previously declared in …

이와 같은 오류가 나타나는 이유로 플러그인과 테마 혹은 워드프레스 코어와 테마 혹은 플러그인과의 충돌로 발생하는 경우가 많습니다.

문제 해결

오류 메시지를 그대로 해석하자면 함수가 중복되어 선언(재선언)되었다는 의미입니다. 따라서 중복된 함수를 찾아서 이름을 달리 하도록 수정해주는 것도 해결하는 한 방법이 될 것 같습니다.

혹은 다음과 같이 if(!function_exists(…))를 사용하여 함수가 중복되면 실행되지 않도록 조치하는 방법도 생각해볼 수 있습니다(여기 참조). function_exists 함수는 여기를 참고하시기 바랍니다.

if(!function_exists('nicdark_add_autocomplete_js')){
function nicdark_add_autocomplete_js() {
echo '
<script type="text/javascript">
/* <![CDATA[ */

jQuery(document).ready(function(){
jQuery("#nicdark_autocomplete").autocomplete({ source: availablePackages });
});

/* ]]> */
</script>
';

}
}

이외에도 해킹으로 인해 이러한 문제가 발생하는 경우도 있다고 하네요(참고). 만약 플러그인 업데이트 후에 이런 문제가 발생하면 플러그인을 이전 버전으로 되돌리거나(아래 참조) 플러그인이 다시 업데이트될 때까지 기다려볼 수 있습니다.

플러그인의 버전을 이전 버전으로 되돌리기

플러그인 업데이트 후에 문제가 발생하면 이전 버전의 플러그인을 다운로드받아서 플러그인 버전을 이전 버전으로 되돌릴 수 있습니다.

예를 들어, 워드프레스 쇼핑몰 플러그인인 WooCommerce의 버전을 다운그레이드(이전 버전으로 낮추는 것)하는 방법을 살펴보면,

먼저 우커머스 플러그인 사이트를 방문합니다(https://wordpress.org/plugins/woocommerce/). 메뉴 중에서 Developers 메뉴를 클릭합니다.

WooCommerce WordPress - 워드프레스 우커머스 플러그인 다운그레이드

표시되는 화면에서 “Other Versions” 부분을 보면 이전 버전이 나와 있습니다.

워드프레스 우커머스 버전 낮추기

원하는 버전을 다운로드받아 FTP를 통해 /wp-content/plugins/ 폴더 아래의 해당 플러그인 폴더에 덮어쓰기하면 플러그인의 버전을 이전 버전으로 낮출 수 있습니다. (FTP 사용법은 워드프레스에서 CSS 추가하기5. FTP를 사용하여 CSS 파일 편집 부분을 참고하시기 바랍니다.)

참고:



기부를 통해 이 블로그를 후원하실 수 있습니다.
워드프레스 설치/제작/문제해결이 필요한 경우 서비스(유료)를 요청해주세요.