wordpress: 최근 추가한 플러그인들…

여기저기 돌아다니다 보니 멋진 플러그인들이 많길래 이것저것 추가해보았습니다.

1. Korean Trackback
이글루스에서 오는 트랙백이 euc-kr 로 인코딩되어 있기 때문에, utf-8 기반의 워드프레스에선 이글루스에서 보내는 트랙백을 제대로 받을 수 없기에… 직접 플러그인을 작성해서 추가해줬습니다. -_-v

url: http://b.mytears.org/2006/09/396

2. iG:Syntax Hiliter
혹시나 포스트에 프로그램 코드를 삽입할 일이 있을 경우를 대비해서, 코드 하일라이팅을 위한 플러그인을 추가했습니다. 상당히 많은 언어를 지원합니다만 sh (쉘스크립트) 는 지원하지 않아서 약간 아쉽네요. 사용 예는 아래와 같습니다.

url: http://blog.igeek.info/wp-plugins/igsyntax-hiliter/

3. wp-scripts, ajax-spoiler
wp-scripts 는 prototype.js 등을 헤더에 삽입해주는 역할을 하고, ajax-spoiler 는 tt 에서와 같이 텍스트를 숨겼다가 보여줬다 하는 기능을 사용할 수 있도록 해줍니다.

tt 처럼 그냥 단순히 보였다 감췄다 정도가 아니라 애니메이션 효과까지 줄 수 있어서 상당히 멋드러집니다. ;)

url: http://082net.com/tag/wp-scripts/
url: http://082net.com/tag/aj-spoiler/

4. bad behavior
request 를 분석해서 봇이라고 생각되면 차단합니다. 적용 후 확실히 스팸이 줄었습니다. (하루 120 통 쯤에서 10통 이하.. 그나마 akismet 에 나머지는 걸립니다.)

url: http://www.homelandstupidity.us/software/bad-behavior/

조금만 부지런하면 이래저래 편리해지는 아름다운 워드프레스 세상입니다. 혹시 또 멋진 플러그인들을 알고 계신 분들은 트랙백 부탁드리겠습니다. ;)

워드프레스를 https 와 함께 이용하는 방법!

개인정보의 유출에 민감하며, https 를 사용할 수 있는 서버를 가지고 있는 사용자들을 위한 간단한 rewrite rule 을 소개하고자 합니다. 오픈웹 사이트를 보면 워드프레스에서 사용자 등록, 로그인, 관리자 모드 등에서는 https 를 사용하도록 리다이렉션이 일어나는 모습을 확인할 수 있습니다.

시작하기에 앞서 이 방식은 아래의 조건을 만족해야 사용할 수 있습니다.

  1. 내 사이트를 https 로 접근이 가능
  2. mod_rewrite 를 사용가능
  3. .htaccess 를 이용 rewrite rule 을 override 가능

워드프레스 루트 디렉토리의 .htaccess 에 들어가야 할 rule 은 다음과 같습니다. (rewrite base 는 wp 의 root location 에 맞게 수정해주면 되겠습니다.)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# For a site running on port 443 (http over ssl)
RewriteCond %{SERVER_PORT} !^80$
RewriteRule !^wp-(admin|login|register)(.*) – [C] RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [L]

# For a site running on port 80 (http)
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^wp-(admin|login|register)(.*) https://%{SERVER_NAME}:10001/wp-$1$2
[L]

RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule>

뭔가 복잡하죠 :) 부분부분 설명을 드리자면 아래와 같습니다.

# For a site running on port 443 (http over ssl)
RewriteCond %{SERVER_PORT} !^80$
RewriteRule !^wp-(admin|login|register)(.*) – [C] RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [L]

80번 포트가 아닌 포트로 접속한 경우를 https request 라고 판단을 하고, 그 중 request uri 가 wp-admin, wp-login, wp-register 와 관련된 것이 아닌 경우에 한해 80번 포트로 리다이렉션을 일으킵니다.

결과적으로 https://b.mytears.org:10001/2005/03/136 과 같은 url 을 http://b.mytears.org/2005/03/136 으로 연결시켜주는 역할을 합니다. (이 url 의 경우 개인적으로 심혈을 기울여 수정했음에도 봐주는 이가 없어서 -_-! 밀어주기를 위해 이런 예제에 자주 사용할겁니다. 캬캬)

# For a site running on port 80 (http)
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^wp-(admin|login|register)(.*) https://%{SERVER_NAME}:10001/wp-$1$2
[L]

80번 포트로 들어오는 요청 들 중에 wp-admin, login, register 등과 관련된 것들에 한해서 https 로 리다이렉션 시킵니다. %{SERVER_NAME} 뒤에 :10001 이 붙은 것은 제 https 서버가 10001 포트에서 돌고 있기 때문입니다.

RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

지금까지 조건에는 해당되지 않은 경우들 중에 실제 서버에 있는 파일이나 디렉토리에 대한 요청이 아닌 경우 index.php 파일을 불러오게 됩니다. wordpress 의 fancy url 을 사용하는 경우를 위한 설정이 되겠습니다.

간단하죠? ;)

wordpress: korean trackback!

어제 까날옹이 egloos 에서 가볍게 트랙백을 날려주셨는데, egloos 에선 trackback 인코딩을 euc-kr 을 사용하는지 트랙백이 깨져서 와버렸네요. 혹시나 관련된 plugin 을 찾아봤지만 plugin 으로는 아직 존재하지 않는 듯 하고, 관련해서 wind-like 님이 문제를 해결한 버젼의 wp-trackback.php 파일을 배포하시더군요.

하지만 wordpress 기본 파일을 수정할 경우 업데이트를 할 때마다 다시 수정해줘야 하는 번거로움이 있기 때문에 그냥 plugin 을 작성해버렸습니다. 막상 plugin 을 작성하려고 보니 trackback_post 에 대한 action 은 글이 삽입된 이후에 실행되도록 되어 있더군요. 역시 그냥 wp-trackback.php 를 수정해서 사용해야 하는건가 하는 생각이 들었지만, 뭐 정도가 아니면 돌아가면 되는 법!! 이미 데이타베이스에 입력완료된 trackback 을 update 하도록 하는 hack 에 가까운 플러그인이 만들어져버렸습니다. -_-v

혹시나 필요한 분은 아래 url 에서 받아서 사용하시면 되겠습니다.

http://mytears.org/resources/distfiles/wp_korean_trrackback-1.0.zip

p.s) wind-like 님이 수정하신 버젼과는 다르게 ‘트랙백을 받는 경우’ 하고만 관련이 있습니다.