워드프레스를 이용하는 장점 중 하나가 수많은 디자이너, 개발자들이 만들어놓은 테마가 있어서 웹사이트 컨셉에 맞는 것을 골라 적용만 하면 된다는 것이다. 물론 완벽하게 내 입맛에 맞는 테마를 찾을 수는 없고 영미권 지역을 대상으로한 것이 대부분이기 때문에, 큰 틀만 맞으면 가져다가 커스터마이징 해서 사용하고 있다.
플러그인을 이용한다면 테마는 원본 그래도 놔두고 스타일시트, 외부 라이브러리 링크, functions 따위를 덮어쓰기 형태로 변형할 수는 있지만 플러그인이 늘어날수록 관리포인트가 많아지는 것이기도 하고, 검증된(?) 플러그인인지 확인하는 번거로운 절차도 필요하다.
플러그인 사용 없이 highlight.js
와 같은 추가 라이브러리를 적용하거나 google analytics
, google adsense
를 적용하기 위해서 약간의 수정을 하는 경우가 많은데, 이렇게 사용하는 경우 뼈대로 삼았던 테마를 그냥 업데이트하면 커스터마이징했던 내용이 모두 덮어쓰여지는 문제가 발생할 수 있다.
그리고 워드프레스는 테마 자체의 버그나 워드프레스 코어 패치를 반영하지 않은 문제로 인한 취약점이 발생할 수 있고 업데이트로 최적화가 되기도 하기때문에, 테마가 업데이트 때마다 반영해주는 것이 좋다.
업데이트 절차
어쨋든 이렇게 한땀한땀 수작업으로 커스터마이징 한 경우에 내가 업데이트를 반영(?)하는 방법은 다음과 같다. git 을 이용한다면 좀 더 편하고 안정적일 수 있는데 기본(?) 컨셉은 같다.
- 기존 테마 백업
- 테마 업데이트 적용
- difference 확인
- 한땀한땀 수정
1. 기존 테마 백업
웹서버, $WP_DIR/wp-content/themes
경로에서 cp -r
명령으로 복사
THEME_NAME=twentytwenty
cp -r ${THEME_NAME} ${THEME_NAME}_old
2. 테마 업데이트 적용
웹브라우저, $WP_URL/wp-admin/themes.php
에서 해당 테마 업데이트 버튼 클릭
3. diff 확인
웹서버에서 아래와 같이 모든 테마 파일에 대해 변경사항 조회
WP_DIR=/var/www
THEME_NAME=twentytwenty
cd $WP_DIR/wp-content/themes/${THEME_NAME}_old
for i in `find -type f`; do
dcnt=`diff ${i} ../${THEME_NAME}/${i} | wc -l`
if [ ${dcnt} -ne 0 ]; then
echo "file" ${i} "has" ${dcnt} "difference(s)."
fi
done
아래와 같이 10개 파일에서 변경사항이 확인됐는데 패치로 인한 것인지 커스터마이징으로 인한 것인지는 확인해봐야겠지만 어쩃든 한땀한땀 고쳐봐야겠다.
file ./inc/customizer.php has 805 difference(s).
file ./inc/functions-template.php has 10 difference(s).
file ./single.php has 29 difference(s).
file ./index.php has 10 difference(s).
file ./style.css has 34 difference(s).
file ./archive.php has 10 difference(s).
file ./search.php has 5 difference(s).
file ./404.php has 5 difference(s).
file ./header.php has 54 difference(s).
file ./functions.php has 55 difference(s).
4. 한땀한땀 수정
vimdiff
로 눈으로 일일이 비교하면서 고쳐나가면 쉽다. 위 loop 에서 변동사항이 있는 파일에 대해서 vimdiff 명령을 뽑아내면 좀 더 수월하게 진행할 수 있다.
for i in `find -type f`; do
dcnt=`diff ${i} ../${THEME_NAME}/${i} | wc -l`
if [ ${dcnt} -ne 0 ]; then
echo "vimdiff ${i} ../${THEME_NAME}/${i}"
fi
done