WordPress 용 플러그인 중에 statpress 란 녀석이 있다.
이 플러그인이 블로그에 방문한 사용자가 검색 엔진을 통해서 들어왔는지, 그렇다면 어떤 검색어로 들어왔는지 추적해준다. 그리고 apache log를 직접 해석해서나 가능한 일인, 방문자(정확히는 IP지만) 별, 진입 경로, 계속해서 본 페이지 등도 추적하게 해준다. 여튼 이 작업 때문에 아래와 같은 일을 했다.
이제부터 모든 경로는 플러그인 설치 디렉토리 기준이다. ((wordpress_설치_디렉토리/wp-contents/plugins/ 가 됨))
우선 검색 엔진 정의 파일이 statpress/searchengines.dat 에 있는데 여기에 다음 두 줄을 추가 해준다.
Naver|cafeblog.search.naver.|query|
Naver|search.naver.|query|
그리고 statpress/statpress.php를 다음처럼 수정해준다.
function iriIsNaverEncodingUTF8( $vars )
{
$i = count($vars);
while( $i–– )
{
$tab = explode( ‘=’, $vars[$i] );
if( $tab[0] == ‘ie’ )
if( $tab[1] == ‘utf8’ )
return true;
else
return false;
}
return false;
}
# statpress.php의 1058번째 줄 수정
if($tab[0] == $key){
if( $nome == ‘Naver’ )
{ // naver?
if( iriIsNaverEncodingUTF8( $variables ) )
return ($nome.‘|’.urldecode($tab[1]));
else
return ($nome.‘|’.iconv( ‘EUC-KR’, ‘UTF-8’, urldecode($tab[1]) ) );
}
else
return ($nome.“|”.urldecode($tab[1]));
}
하는 일을 따지자면,
- referrer url 을 받았을 때, 이를 검색 엔진이름에 해당하는지 분석하는데, (def/searchengines.dat 기준)
- 여기 추가한 Naver 관련 항목을 이용하고,
- Naver 일 땐 검색어 인코딩이 UTF-8 인지 혹은 UHC(or EUC-KR 여튼 legacy 한지 확인)인지 검사하고,
- UTF-8 이면 그냥 원래 statpress 코드를, 그렇지 않으면 EUC-KR을 UTF-8으로 변경한다
정도?
이 수정 작업을 마치고 나면 네이버에서 검색해들어온 결과가 깨지지 않게 된다.
ps. 이 작업을 처음 했을 때 – 밤 중에 애가 배고프다고 울 때, 아내가 젖주는 동안 노트북으로 코딩했다 – 수정이 다 끝났는데도 결과가 그대로라서 삽질했다. 원인은, 위 코드를 잘 보면 알겠지만 $nome 이라는 변수가 있는데, 난 이걸 $name 으로 보고 코딩한 것. 확인해보니 플러그인 제작한 이가 이탈리아 인이었고, 이탈리아 어의 name에 해당하는 단어가 nome 인 것. Orz.
밤 중의 흐릿하게 보이는 화면에서 nome과 name을 어찌 구분하나요 ㅠㅠ.
삽질 ㄳ
선ㄳ 후 적용중….
$i– 가 아마도 하이픈으로 컨버팅된 듯.. pre태그점
젝일 리플도
가 안되나 ㅡ.ㅡ?
– 두 개는 당연히 dash로 전환.
어제 잘못 올라갔던건 pygments for Windows Live Writer가 제대로 동작 안해서 -_-;
IronPython 이랑 pygments 다시 깔고나니 잘 돌길래 업데이트