statpress 에 Naver 검색 추가하기

WordPress 용 플러그인 중에 statpress 란 녀석이 있다.

이 플러그인이 블로그에 방문한 사용자가 검색 엔진을 통해서 들어왔는지, 그렇다면 어떤 검색어로 들어왔는지 추적해준다. 그리고 apache log를 직접 해석해서나 가능한 일인, 방문자(정확히는 IP지만) 별, 진입 경로, 계속해서 본 페이지 등도 추적하게 해준다. 여튼 이 작업 때문에 아래와 같은 일을 했다.

이제부터 모든 경로는 플러그인 설치 디렉토리 기준이다. ((wordpress_설치_디렉토리/wp-contents/plugins/ 가 됨))

우선 검색 엔진 정의 파일이 statpress/searchengines.dat 에 있는데 여기에 다음 두 줄을 추가 해준다.

Naver|cafeblog.search.naver.|query|
Naver|search.naver.|query|

그리고 statpress/statpress.php를 다음처럼 수정해준다.

# statpress.php의 1046번째 줄에 추가
function iriIsNaverEncodingUTF8( $vars )
{
    $= 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을 어찌 구분하나요 ㅠㅠ.

Jinuk Kim
Jinuk Kim

SW Engineer / gamer / bookworm / atheist / feminist

Articles: 935

4 Comments

Leave a Reply