워드프레스는 php 로 만들어졌습니다. 워드프레스 엔진이 기본적으로 제공하는 많은 함수들이 있고 테마를 만들 때 그 함수들을 잘 사용하면 됩니다. 하지만, 그 외 다른 기능이 필요할 경우, 직접 php 코드를 작성해서 워드프레스 엔진 내에서 사용할 수 있습니다. 개발자는 그 코드들을 functions.php 파일에 작성하면 됩니다.
워드프레스에서 이야기하는 플러그인도 개발자가 php 로 만들 수 있습니다. 플러그인은 눈에 보이는 것을 결정하는 테마와는 별도로 사이트에 특별한 기능을 추가할 수 있습니다.
functions.php 도 워드프레스에 기본적으로 있지 않은 다른 기능을 위해서 코드를 작성한 것인데 플러그인과 비슷한 것 같습니다.
하지만! 테마 종속적이라면 functions.php에 작성하고 특별히 테마에 종속되는 기능이 아니라면 플러그인으로 개발할 것을 권합니다.
functions.php 의 사용 예
functions.php 에는 어떤 내용들을 작성해야하는가…하면 워드프레스의 기본 제공 함수에 action을 걸거나 워드프레스가 돌려주는 데이터를 필터링을 할 경우에 관련 코드를 작성하게 됩니다.
워드프레스 어느 함수가 실행되고 나면 바로 어떤 작업을 하고 싶을 때, action을 거는 것이고, 워드프레스가 데이터베이스에서 데이터를 뽑아서 줄 때, 필요한 데이터만 추출하도록 필터링을 하는 것 등입니다.
이렇게 보니 필요한 작업이 없으면 작성을 하지 않아도 되지 않나 생각이 듭니다.
테마 셋업
만약 워드프레스 관리자에서 새로운 테마를 설치할 경우, 그 때만 테마를 위한 어떤 설정을 한번 할 필요가 있다면 어떻게 할 수 있을까요?
functions.php 에는 action을 걸 수 있다고 했습니다. 그리고 워드프레스는 ‘after_setup_theme’ 라는 훅(Hook)을 제공합니다. 이 훅에 액션을 걸어 원하는 작업을 시키면 테마를 설치한 후 딱 1번 실행시킬 내용을 지정할 수 있습니다.
위 코드처럼 add_action() 함수를 이용해 테마가 설치된 시점에 특정 함수를 실행하도록 작성할 수 있습니다.
다른 php 파일을 사용하는 방법
functions.php 파일에 원하는 코드를 모두 작성할 수도 없고, 관련 기능별로 별도 파일로 작성하고 싶을 경우, 별로 파일을 워드프레스가 인식하고 사용가능하도록 만들기 위해서 아래 코드를 functions.php 에 작성하면 됩니다.
include get_parent_theme_file_path( ‘inc/helpers.php’ );
포함시키고 싶은 별도의 php 파일은 inc 폴더 안에 있는 helpers.php 입니다. inc 폴더는 테마 폴더 바로 아래에 있습니다.
<?php 태그를 닫지 말라!
php 파일은 <?php 로 시작해서 ?> 로 끝이 나야하는데, functions.php 파일에서 ?> 로 코드 작성을 마친 후, 종료 태그 뒤에 white space 가 있으면 워드프레스가 오작동해서 화면이 아무 내용없이 하얀 색으로 표시된다고 한다.
이 오작동을 피하는 가장 확실한 방법은 functions.php 파일에서 ?> 종료 태그를 적지 않는 것이라고 하며 이것은 php 문법에 어긋나는 것이 아니라고 한다.
그러니까, functions.php에는 ?> 사용하지 말자.
Leave a Reply