아마 WordPress 2.6부터 새로 더해진 기능인 듯 한데, Post revisions은 모든 글을 작성할 때마다 매번의 수정 기록들을 버전 형태로 DB에 자동 기록해 주는 기능이다. 물론 여러명이 함께 글을 작성할 경우에는 관리적인 면에서 도움이 될까마는, 나 혼자서 글을 올리는 이 곳에서는 , 개인적인 글 쓰는 습관에 비추어 별 필요성을 느끼지 못할 뿐만 아니라 DB 공간만 차지하는 불필요한 기록들로 남게 된다.

결국, 이 Post Revisions 기능을 꺼주는 Revision Control Plugin을 설치하고, 이미 DB에 저장되어 있는 과거 revisions 기록들은 다음과 같은 SQL 명령으로 지워주었다.

DELETE FROM wp_posts WHERE post_type = "revision";

그 동안 스팸의 염려로 WordPress에서 기본적으로 제공하는 Akismet과 더불어서 강력하다는 Bad Behavior plugin을 사용하고 있었다. 하지만, 이 Bad Behavior란 놈은 정상적인 댓글마저도 스팸으로 오인하는 치명적인 부작용을 가끔씩 경험하게 만들었고, 또 웹 페이지에 뿌려대는 지저분한 코드들과 이로 인한 페이지의 로딩 속도를 상당히 지연시키는 단점을 가지고 있기도 해서, 이번에 WordPress 2.6 버전으로 갱신하면서 사용을 중단하고 대신 차선책을 살펴보았다.

찾아보니, 비슷한 이유로 Bad Behavior와의 작별을 고하면서 차선책들을 강구해놓은 글을 참고해서, 방어막 구축에 다시 손을 보탰다.
주요 방비책으로는 결국 .htaccess 파일의 수정으로 요약되는데, 아래의 내용은 POST 시 Referrer가 없는 request들을 차단해준다:

# block comment spam by denying access to no-referrer requests 
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*mydomainname.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^(.*)$ ^http://%{REMOTE_ADDR}/$ [R=301,L] [R=301,L]

여기서, !.*mydomainname.com.* 부분은 자신의 도메인 이름으로 대치해주면 됨.

자, 이제 지켜볼 일만 남았군.

얼마전 WordPress가 2.5로 갱신되었다는 소식에 그 동안 미루었던 갱신 작업을 마무리하였다.
예전 2.2.3에서 단숨에 2.5로 갱신. 지금 사용하고 있는, 약간의 수정을 거친, iTheme 테마가 혹시나 호환성에서 문제를 일으키지 않을까 걱정을 했었는데 아직 큰 문제는 눈에 띠지 않는다.

하지만, 오랜만의 갱신이라 몇몇 사용하고 있던 Plugin들이 문제를 일으키는 바람에 다른 plugin들로 대체하는 수선을 떨어야 했다. 먼저, 꼬리표(tag) 관리 목적으로 사용하던 Simple Tagging Plugin이 더 이상 WordPress 2.5 버전과 궁합이 맞지를 않아서, 대신 Simple Tags으로 대체하였다. 예전 사용하던 꼬리표 정보는 WordPress에서 기본 제공하는 import 기능으로 그대로 가져와서 사용할 수 있었다. 문제는 꼬리표 사용 목적의 주된 이유 중 하나인 Tag Cloud 기능이 제대로 작동하지 않고 있다는 것.
또한, Live Comment Preview Plugin도 최신 버전(1.8.2)으로 갱신하였으나 감감 무소식이라, 이것도 좀더 지켜봐야겠다.

전체적으로 관리자 화면이 좀 더 산뜻해졌고 Plugin 관리도 훨씬 쉬워졌으나, 지금 사용하고 있는 테마와의 충돌인지 새로운 widgets 추가가 어렵고 페이지 로딩 시 잠시 동안 레이아웃이 깨지는 현상을 보인다.

겸사겸사 테마를 바꿀 때가 온 걸까?

덧, 이제 WordPress 2.5에서는 plugin을 쓸 필요없이 Gravatar 표시 기능을 자체적으로 지원해주기 때문에, 사용하는 테마에 gravater를 추가하고자 할 경우, comments.php파일을 열어서 표시하고자 하는 위치에 다음 한 줄을 추가해 주면 된다. (뒤의 숫자는 gravatar 그림의 크기.)

<?php echo get_avatar$comment32 ); ?>

WordPress 2.2에서의 바뀐 점들을 살펴보면 전체적으로 커다란 변화가 있었음을 알 수 있다.

먼저, wp-config.php 파일에 DB 인코딩 관련 두 가지 새로운 설정 값이 추가되었는데,

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

이로써, 간단한 설정만으로 db에서 utf-8 인코딩을 사용할 수 있게 되었다.

그리고 부분적으로 관리자 User Interface 기능을 구현하는데 jQuery JavaScript 라이브러리가 사용되었으나, 아직 Prototype으로부터의 완전한 이주는 진행되지 못한 상태다.

눈에 보이는 새로 추가된 기능으로는 그 동안 plugin 형태로만 제공되던 Widgets이 기본 테마에 추가되면서 덕분에 옆구리 막대의 관리와 수정이 한결 손쉬워 졌고, 드디어 Atom 1.0 발신 신호도 공식 지원한다.

이번 갱신으로 그 동안 입맛에 맞게 수정해서 사용하던 기본 테마에도 커다란 변화가 생기면서 덩달아 변화를 주기 위해 WordPress 2.2와 호환되는 새로운 테마를 수소문하게 되었다.
그래서 새로 설치게된 테마가 iTheme 1.1이라는 테마인데, Mac의 UI를 닮아서 어쩌면 식상할 수도 있지만 개인적으로 익숙한 것이라서 오히려 보기에도 더 편안하고 깨끗한 느낌이 든다.

아래는 내 입맛에 맞게 iTheme 테마를 수정했던 내용을 적어놓는다.

  • 먼저, 글의 고정된 연결 고리들(permalinks)을 더 뜻이 있고 접근성을 높이기 위해 다음과 같은 맞춤형 구조로 설정해주었다.
    Custom structure: /%category%/%postname%/
    이렇게 하면 예전 글의 링크들이 깨지는 부작용이 있지만, 진작에 고쳐주지 못한 책임으로 여길 수 밖에. 🙁
  • 테마 파일에 쓰여진 get_settings 함수는 앞으로 지원이 중단될 예정이기 때문에 대신에 get_option 함수로 대체함(header.php).
  • iTheme에는 기본 제공되는 blockquote 스타일이 없는 관계로 Shape Shed에 설명되어 있는 quotations 스타일을 빌려와 적용해 주었다.
  • 접근성을 고려해서 검색 form에 label을 추가하고 jQuery를 이용해서 검색 input box 클릭시 자동으로 가려주도록 Hover 효과를 주었으며, 링크들이 모여 있는 곳으로 바로 이동할 수 있도록 평상시에는 감춰져 있는 건너뛰기 링크를 추가했다. 그리고 a:hover 스타일과 함께 a:focus에도 같은 스타일이 적용되도록 함.
  • code 표시 block에 syntax highlight 기능을 구현하기 위해 전처럼 textmate 테마를 적용.
  • background 그림을 Mac OS X의 기본 Aqua Graphite 배경 그림으로 교체
  • 글의 내용이 들어가는 공간의 너비를 545px에서 600px의 크기로 약간 넓힘. 이에 따라, 글 내용을 감싸고 있는 테마에 사용된 몇몇 그림들(content-top-bg.png, content-bottom-bg.png, navigation-bg.gif)을 더 넓은 것으로 수정해서 교체해야 했고, 댓글 폼에 있는 submit 단추의 margin-left 값을 55px 더 큰 410px로 주었다.

이제야 밀린 숙제를 간신히 끝낸 기분이군. 😛

예전에는 블로그 글에 포함된 코드의 문법을 색깔별로 구분하기 쉽게 표시되도록 WordPress의 plugin인 iG:Syntax Hiliter를 사용했었다. 하지만, 보이는 코드의 모양도 별로 마음에 들지 않거니와 코드 속에 쓸데없이 자동으로 포함되는 특정 요소 관련 링크들은 오히려 코드의 해석을 어렵게 하고, 문서의 구조까지 해치는 부작용이 있었다. 물론 지원되는 언어들도 한정적이었고.

그래서, 바램이었다면 평소 애용하는 TextMate를 이용해서 지원하는 여러 가지 다양한 테마들에서 보이는 코드의 모양을 그대로 블로그에도 옮겨놓을 수 없을까 궁금해하던 차에, 찾아보니 딱 내가 바라던 방법을 소개해 놓은 글을 발견하게 되었다. 그 후로 소개된 요령을 참고 해서 이미 올려두었던 코드들을 일일이 바꾸면서 이곳에도 비슷하게 적용해서 만족하게 사용하고 있다. 물론 코드를 올릴 일이 있으면 그 전에 TextMate에서 또 한 번의 변환 과정이 필요하지만 “Create HTML From Selection” 메뉴에 단축키만 지정해 두면 이것 또한 번거로운 작업은 아니다.

그런데, 사람의 욕심은 끝이 없어서인지 작업은 여기서 멈추지 않고, 이렇게 변환돼서 예쁘게 올려진 코드라도 실제로 쓰려고 복사할 때는 줄 바꿈이라든지 코드의 원래 모양이 제대로 전달되지 못하는 부작용이 있을 수 있다. 이것을 해결하기 위해서는 블로그에서 코드의 원래 모양을 그대로 전달해 주는 또 하나의 간단하면서도 깨끗한 버전의 모양새를 선택할 수 있게 해야 하는데, 일반적으로 떠오르는 방법으로 JavaScript의 힘을 빌려 새로운 창에 보여주는 방법이 있지만, 이것도 그리 깔끔한 방법은 아닌 듯 보였다.

마침, 요새 주무르고 있는 jQuery에서 제공하고 있는 몇 가지의 동작 효과들을 사용하면 간단하게 원하는 기능을 구현할 수 있을 것 같아서 바로 적용해 보았고, 참고를 위해 그 적용 방법을 여기에도 남겨둔다. jQuery를 이용해서 코드의 모양새(style)를 자동으로 바꾸어 주기(이)란 제목의 글 마저 읽기 →