테마 수정 없이 PHP 코드를 추가하는 몇 가지 방법

워드프레스를 사용하다 보면 사이트에 PHP 코드를 직접 추가할 경우가 종종 생깁니다. 예를 들어, 새로운 콘텐츠 유형을 하나 만들어 넣는다거나 웹사이트의 페이지네이션에 변화를 주거나 아니면 콘텐츠 영역 하단에 연관 콘텐츠를 추가하거나 하는 등의 경우입니다. 물론 이 밖에도 다양하지만.

플러그인으로 설치하면 되는 것 아닌가요?

맞습니다. 물론 플러그인이 있을 경우 플러그인을 설치하면 대부분의 문제는 해결됩니다. 하지만 비록 엄청나게 많은 플러그인을 갖고 있는 워드프레스라 해도, 개똥도 약에 쓸려면 없다고 꼭 맞는 플러그인을 찾을 수 없는 경우도 있습니다. 게다가 아주 조그만 기능 하나 하나까지 일일이 플러그인으로 대응하다 보면 소위 ‘플러그인 지옥(plugin hell)’에 빠지는 경우도 생깁니다.

테마 파일을 수정하면 되는 거 아닌가요?

맞습니다. 테마 파일을 직접 건드릴 수 있다면 테마 파일을 수정하는 것도 한 방법입니다. 하지만 이것 역시 문제가 없는 건 아니죠. 테마 파일을 직접 건드릴 경우, 테마 파일이 업데이트되거나 하는 등의 경우에 문제가 발생할 수 있습니다. 또한 테마 파일 전체 구조를 제대로 이해하지 못한 상태에서 테마를 건드리다 보면 자칫 사이트 전체가 깨지는 상황이 발생할 수도 있죠.^^

그렇다면 테마 파일을 직접 건드리지 않고, 워드프레스 관리자 대시보드 상에서 필요한 PHP 코드를 추가하는 방법은 없을까요?

여기 몇 가지 방법을 소개합니다.

functions.php 파일

테마 파일을 건드리지 않겠다 해놓고 처음부터 거짓말을 했군요. 맞습니다. 가장 흔히, 그리고 많이들 쓰는 방법은 테마 속 functions.php 파일을 수정하는 방법입니다. 관리자 “외모 > 테마 편집기” 메뉴에서 “테마 함수(functions.php)”를 선택하여 필요한 PHP 코드를 추가해 넣으면 됩니다.

자식 테마를 사용한다면 자식 테마의 functions.php 파일을 사용하면 되구요.


저희 WordPress 가이드에서도 이 방법을 한 번 소개한 적이 있죠.

워드프레스에서 자바스크립트 다루기

이렇게 functions.php 파일을 수정할 경우 장점은 무엇보다 쉽고 간단하다는 점입니다. 별도로 무언가를 설치 하거나 설정을 할 필요가 없습니다. 단점은, 이게 테마 파일의 영역이라는 것이죠. 테마 속에 들어있는 파일이다 보니 테마를 업데이트하거나 다른 테마로 테마를 변경하게 되면 더는 작동하지 않죠. ㅠㅠ

코드 스니펫 플러그인

워드프레스 플러그인들 중에는 웹사이트에 PHP 코드를 삽입할 수 있도록 해 주는 플러그인들이 많습니다. 통상적으로 ‘코드 스니펫(code snippets)’라고 불리는 작은 PHP 코드 조각을 사이트에 추가할 때 사용하는 플러그인들이죠.

그 중 많이 쓰는 플러그인 중 하나가 Code Snippets라는 플러그인입니다.


이 플러그인을 설치하면 아래와 같이 관리자 대시보드에 “Snippets”이라는 메뉴가 하나 추가됩니다.


이 메뉴를 통해 필요한 코드를 추가하거나 변경, 관리할 수 있습니다.

예를 들어, 젯팩(Jetpack)에서 제공하는 관련 글(Related Posts)의 개수를 변경하고 싶다고 해 보죠. (기본 개수는 3개)

젯팩 문서에는 jetpack_relatedposts_filter_options 필터를 후킹하면 된다고 나와 있습니다. 이럴 때 스니펫을 추가해 주면 됩니다.

“Add New” 버튼을 눌러 다음과 같이 필요한 코드를 추가합니다.


스니펫 목록(All Snippets)에서 보면 다음과 같이 새 스니펫이 하나 추가된 것을 알 수 있습니다.


추가와 동시에 바로 코드가 적용되기 때문에, 관련 글의 개수가 벌써 변경되었네요!

Code Snippets 플러그인은 ‘Deactivate’ 기능도 있어서 특정 스니펫의 기능을 켰다 껐다 할 수 있습니다. 마치 플러그인을 다루는 것과 비슷하죠. 그야말로 ‘미니 플러그인’ 시스템이라 불러도 될 정도입니다. 아주 좋죠?

사이트 특화 플러그인

사이트에 특화된 플러그인을 사용하는 방법도 있습니다.

대개 워드프레스에서 ‘플러그인’이라고 하면 특정 사이트에 한정되는 게 아니라 일반적이고 범용적인 범위를 갖지만, 반드시 그래야 하는 것은 아닙니다. 특정 사이트에서만 필요한 기능을 하나의 플러그인 형태로 만들어 사용할 수도 있는데, 이런 유형의 플러그인을 통상적으로 ‘사이트 특화 플러그인(site-specific plugin)’이라 부릅니다.

사이트에 특화된 플러그인이라 해서 만드는 방법이 따로 있는 건 아닙니다. 일반적인 플러그인 만드는 방법과 똑같습니다. ‘용도’만 다를 뿐이죠.

사이트 특화 플러그인은 플러그인 하나로 전체 사이트에서 필요로 하는 모든 기능을 처리할 수도 있고, 필요한 기능 별로 각각 하나의 플러그인으로 만드는 방법도 있습니다.

언제 사용할까요?

앞서의 두 가지 방법, 즉 functions.php 파일을 수정하거나 코드 스니펫(code snippets) 만으로는 해결하기 힘든 문제가 생긴 경우라면 사이트 특화 플러그인이 필요한 때입니다. 기능이 좀 복잡해져서 PHP 코드 뿐 아니라 자바스크립트나 CSS 등도 필요해 지면 그때가 바로 플러그인을 쓸 때가 온 거겠죠.

플러그인 만드는 법은 여기서는 따로 다루지 않겠습니다.

사이트 특화 플러그인과 워드프레스 플러그인 만드는 법에 관해 더 자세한 내용이 필요한 분들은 아래 문서를 참고 바랍니다. 🙂

0 thoughts on “테마 수정 없이 PHP 코드를 추가하는 몇 가지 방법”