워드프레스 2.1 스크립트 로더 살펴보기


이번에 wp-slimstat-ex 1.3 공개를 준비하던 중 워드프레스 2.1에서도 무리 없이 작동하는지를 테스트 하던 중 우연히 wp-includes 폴더안의 script-loader.php 파일이 포함되어있는걸 알게 되었습니다.

포함됀지 꽤 된 듯 한데, 관심깊게 보지 않아서 몰랐었군요. 관리자 화면 또는 블로그 페이지에서 아주 간단한 방법으로 중복되지 않으면서 순차적으로 자바스크립트를 로딩시켜 주는 기능을 제공하고 있네요. wp-scripts플러그인이 무색해지는 순간이었습니다.:?

대표적인 함수인 wp_enqueue_script() 를 살펴보면:

인데, 워드프레스 2.1의 wp-includes/js 폴더 안의 파일들은 WP_Scripts 클래스에서 기본값으로 인식하기 때문에 위 설정값들을 다 적을 필요없이 인식자만 적어주면 로딩에 포함되게 됩니다.

설정값들을 조금 살펴보면
  • $handle : 스크립트 파일을 구분하는 인식자라고 생각하면 될 듯 합니다.
  • $src : 스크립트 파일의 url 입니다. "http://"형식의 주소도 인식하지만, 워드프레스 설치 루트폴더로 부터의 경로도 인식합니다.(예: /wp-content/plugins/myplugin/js/test-script.js)
  • $deps : 어떤 스크립트에 부속되는 경우, 상위 스크립트의 인식자($handle)를 array 형태로 입력합니다. 예를 들어 effects.js 같은 경우 $deps 부분에 array('prototype')을 적어주면 되겠죠.
  • $ver : 파일의 버전을 적어둡니다. 파일이 업데이트 되었을 경우 버전값이 다르면, 브라우저 캐쉬에 남아있는 임시 파일때문에 스크립트 오류가 발생하는 것을 피할 수 있습니다.
플러그인에서 한번 적용해 보면
  • 자바스크립트를 등록하는 함수를 만들어 놓은 뒤 :
  • Hook 에 등록해서 등록된 자바스크립트를 출력하도록 하면 되겠죠 :
  • 주의 할 점 이라면, 이렇게 하면 관리자화면, 블로그 페이지에 모두 적용되기 때문에 함수에서 관리자화면(is_admin) 에서만 또는 블로그 페이지에서만 또는 플러그인 설정 페이지 에서만 로딩되도록 하는 조건을 붙여주는게 좋다는 것입니다.

wp-scripts 플러그인을 만들면서, 구현하고 싶었던 거의 모든 기능들이 들어가 있는거죠. 가뜩이나 숱도 별로 없는 머리 부여잡고 만들었는데, 한숨만 나오는 군요 휴... 어쨓든 살금 살금 고쳐나가던 wp-scripts를 전면 수정해서 WP 2.1의 script-loader.php파일을 빌려와서 표현하는 방법을 모색해 봐야겠습니다. 뭐... 2.1이 공개되기 전까지는 써먹을 수 있겠죠 ;)