Archive for the ‘About Blog’ Category

워드프레스 2.x.x 트래백핑 인코딩 문제 해결

Wednesday, January 24th, 2007

가장 나은 방법 : 영팔님이 플러그인을 만들어 주셨습니다.
http://082net.com/2008/859/euckr-trackback-plugin/
위 링크의 플러그인을 사용하여 문제를 해결하는 것을 권장합니다. 이 포스트는 더이상 업데이트를 하지 않겠습니다.
-2008.8.24

Wordpress를 사용하다보면 UTF-8과 EUC-KR로 인코딩된 블로그간에 트랙백을 받거나 보낼때 글씨가 깨지게 된다. 이 hack은 다르게 인코딩된 블로그 사이의 트랙백이 깨지지 않게 하기 위한 것이다. UTF-8로 인코딩된 Wordpress 2.1 버전을 기준으로 작성되었다.

새로운 버전의 워드프레스가 나왔을 때 대처하는 요령

이 포스트에 새로운 버전에 대한 파일이 올라오지 않았을 경우 예전 버전용 파일을 업그레이드한 워드프레스에 덧씌우지 마세요. wp-trackback.php 파일과 comment.php 파일만 예전 버전이므로 제대로 작동할리 만무할뿐 아니라 치명적인 오류를 유발할 수 있습니다. 새버전의 파일에서 포스트의 내용에 나온 부분만 수동으로 고치는 방법만이 안전합니다. 이 포스트의 소스를 Copy해서 에디터에 Paste 할 경우에 작은따옴표(’)를 수정하셔야 합니다. mbstring 모듈 사용자는 wp-trackback.php 파일의 $charset에 EUC-KR을 추가함으로써 간단히 받는 트랙백 문제를 해결할 수 있습니다.

다운로드

Wordpress 1.5.x용 : 링크
Wordpress 2.0.x용 : 링크

Wordpress 2.1.0용 : 다운
Wordpress 2.1.3용 : 다운

Wordpress 2.2용 : 다운
Wordpress 2.2.1용 : 다운
Wordpress 2.2.2용 : 다운
Wordpress 2.3부터 2.3.3용 : 다운
Wordpress 2.5용 : 다운
Wordpress 2.5.1용 : 다운

다른 해결방법

영팔님이 약간의 hack이 필요한 플러그인을 만드셨습니다.
워드프레스 EUC-KR 트랙백 플러그인(HACK)

정태영님이 받는 트랙백용 플러그인을 만드셨습니다.
Korean Trackback Plugin

사용방법

받는 트랙백은 자동으로 변환된다.

보내는 트랙백은 트랙백 받는 블로그가 EUC-KR을 사용할 경우 트랙백 보내는 주소 앞에 !를 붙여서 사용한다.
Send trackbacks to: 의 트랙백 주소 적는 곳에 !http://트랙백주소 를 넣는다.
예) !http://www.windlike.net/blog/236/trackback/
2.0용 버전과 다르게 데이타베이스에는 !가 제거된 트랙백 주소만이 남는다.

같은 인코딩일 경우 그냥 트랙백 주소만 적는다. !를 붙여서 인코딩을 변환하면 오히려 깨진다.
예) http://www.windlike.net/blog/236/trackback/
상대의 인코딩을 알아내는 방법은 상대의 블로그를 열고 브라우져의 보기 - 인코딩 메뉴를 보면 알 수 있다.

[참고] 예전 버전들이 !를 제거하지 않고 데이터베이스에 기록한 이유는 인코딩을 잘못 선택하여 트랙백을 보냈을때 다시 보낼 수 있게 하기 위함이다. 즉 already pinged에 다르게 기록되므로 다시 보내는데 문제가 없다. 이번부터는 UTF-8 블로그에 !를 붙여서 보낸 경우 다시 보낼수 없지만(이미 트랙백을 보낸 주소이기 때문에) EUC-KR인 블로그에 !로 붙이지 않고 트랙백을 보냈다면 다시 !를 붙여서 보낼수 있다.(!를 붙이더라도 저장은 주소만 되므로 다시 보낼때 !가 붙은 주소를 다른 주소로 인식한다) 이 경우 already pinged에 같은 주소가 두개 존재하게 된다.
다른 문제점으로는 에디트 화면의 Trackbacks 폼에 !가 남아있다. PHP와 웹프로그래밍에 대한 이해가 부족하여 해결하지 못하였다. !를 지우고 다시 Save를 하면 사라진다.

주의사항

적용대상 :
- PHP 4.0.6 이상
- mbstring 모듈이나 iconv 모듈 둘 중 하나가 설치되어 있어야 함

확인방법 :
- 직접 호스팅 업체에 문의
- 다음 코드를 에디터를 이용하여 test.php로 저장한 후 브라우져에서 실행한다(미리 작성된 파일 : 다운)

<?php
echo 'PHP version: ' . phpversion() . '<br />';
if ( function_exists('mb_convert_encoding') ) echo 'mbstring OK!<br />';
else echo 'mbstring fail..<br />';
if ( function_exists('iconv') ) echo 'iconv OK!<br />';
else echo 'iconv fail..<br />';
?>

mbstring OK! 가 나오면 mbstring 모듈을 이용할 수 있다(둘 다 OK일 경우 이방법을 권장)
iconv OK! 가 나오면 iconv 모듈을 이용할 수 있다(mbstring fail 일 경우 이 방법으로 한다)
둘다 fail이면 호스팅 업체에서 둘 중 하나를 설치해 줄때까지 불가능하다

라이센스

Wordpress가 GPL이기 때문에 이 hack 역시 GPL을 따른다. 수정 및 재배포 모두 가능함.

지금까지 도움주신 분들

아거님, 입명이님, H.Moon님, BluedSnow님, 지윤님, UNFGroup님, unfusion님, 영팔

받는 트랙백핑 문제 해결(mbstring)

/wp-trackback.php를 열어 $charset에 EUC-KR을 추가한다

$charset = 'ASCII, UTF-8, EUC-KR, ISO-8859-1, JIS, EUC-JP, SJIS’;
mbstring 모듈을 사용할 수 있을 경우 직접 수정해서 사용하면 편리하다.

받는 트랙백핑 문제 해결(iconv)

/wp-trackback.php를 열어

if ( function_exists('mb_convert_encoding') ) {
$title = mb_convert_encoding($title, get_settings('blog_charset'), $charset);
$excerpt = mb_convert_encoding($excerpt, get_settings('blog_charset'), $charset);
$blog_name = mb_convert_encoding($blog_name, get_settings('blog_charset'), $charset);
}

아래에 다음을 추가한다

elseif ( function_exists('iconv') ) {
if ( !seems_utf8($title) )
$title = iconv('EUC-KR', 'UTF-8', $title);
if ( !seems_utf8($excerpt) )
$excerpt = iconv('EUC-KR', 'UTF-8', $excerpt);
if ( !seems_utf8($blog_name) )
$blog_name = iconv('EUC-KR', 'UTF-8', $blog_name);
}

보내는 트랙백핑 문제 해결

/wp-includes/comment.php를 열어 trackback 함수를 찾는다

function trackback($trackback_url, $title, $excerpt, $ID) {
global $wpdb, $wp_version;
if ( empty($trackback_url) )
return;
$title = urlencode($title);
$excerpt = urlencode($excerpt);
$blog_name = urlencode(get_option(’blogname’));

$tb_url = $trackback_url;

를 $blog_name = get_option(’blogname’);이 두부분으로 나뉘어 수정되는것 주의하며 아래와 같이 바꾼다

function trackback($trackback_url, $title, $excerpt, $ID) {
global $wpdb, $wp_version;
if ( empty($trackback_url) )
return;
$blog_name = get_option(’blogname’);
if ( $trackback_url[0] == ‘!’ ) {
$trackback_url = substr($trackback_url, 1);
if ( function_exists(’mb_convert_encoding’) ) {
$title = mb_convert_encoding($title, ‘EUC-KR’, ‘UTF-8′);
$excerpt = mb_convert_encoding($excerpt, ‘EUC-KR’, ‘UTF-8′);
$blog_name = mb_convert_encoding($blog_name, ‘EUC-KR’, ‘UTF-8′);
} elseif ( function_exists(’iconv’) ) {
$title = iconv(’UTF-8′, ‘EUC-KR’, $title);
$excerpt = iconv(’UTF-8′, ‘EUC-KR’, $excerpt);
$blog_name = iconv(’UTF-8′, ‘EUC-KR’, $blog_name);
}
}

$title = urlencode($title);
$excerpt = urlencode($excerpt);
$blog_name = urlencode($blog_name);
$tb_url = $trackback_url;

WP-SlimStat 몇가지 수정 사항

Friday, April 14th, 2006

이 포스트는 예고없이 수정 삭제 될 수 있습니다

패치 파일(2006.4.14 for 0.8.7) : 다운

wp-slimstat를 깔면 황당한게 euc-kr로 삼월 사월 이렇게 달이 나온다
당연히 utf-8에서는 글씨가 깨진다(서버 자체가 utf-8이 아닌 이상)
그걸 수정하기 위해선 에디터로 ‘LC_TIME’을 검색해서
setlocale (LC_TIME, WPLANG);
를 아래와 같이 주석처리한다(꽤 여러곳이다)
//setlocale (LC_TIME, WPLANG);

그러면 로케일이 한국으로 설정된걸 주석처리했으므로 영어로 나오게 된다

검색엔진 추가
yahoo나 google로 검색해서 이 비슷한 무더기를 찾은후에 추가한다.
array( "/.*/", "query" ),
array( "/.*/", "q" )

위에 아래를 추가
array( "/search\.naver\./i", "query" ),
array( "/search\.daum\./i", "q" ),
array( "/search\.empas\./i", "q" ),
array( "/search\.nate\./i", "query" ),
array( "/search\.paran\./i", "query" ),
array( "/1noon\./i", "q" ),

코드를 보니 굳이 추가 안해도 작동하게 되어있다.
위의 위 코드에서 보는것처럼 어떤 사이트든 query나 q를 통하면 자동으로 검색엔진으로 인식하므로
굳이 추가할 필요는 없을 듯 보인다.

인코딩 변환
이론적으로는 이상이 없으나 아직 충분한 테스트를 거치지 않았다.
혹시라도 일어날 모든 책임은 사용자에게 있다.

위에 수정한 코드 조금 밑으로 내려오면
return $mySearchTerms;
}
// end determineSearchTerms

가 있다. 그 위에 아래의 코드 추가
if ( function_exists('mb_convert_encoding') ) {
$mySearchTerms = mb_convert_encoding($mySearchTerms, 'UTF-8', 'ASCII, UTF-8, EUC-KR');
}
else if ( function_exists('iconv') ) {
if ( !preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs’, $mySearchTerms) )
$mySearchTerms = iconv(’EUC-KR’, ‘UTF-8′, $mySearchTerms);
}

WP-ShortStat에 한글 검색 엔진 등록 및 인코딩 변환

Friday, April 14th, 2006

많은 워드프레스 블로거들이 WP-ShortStat 플러그인을 사용하지만 이 플러그인의 Search Strings에 등록되는 검색 엔진에 우리나라 검색엔진들은 포함이 되지 않아 정확한 통계가 나오지 않는다. 게다가 인코딩에 상관없이 등록되어 EUC-KR로 된 검색어를 볼 때는 페이지의 인코딩을 바꿔서 보아야 하는 불편함이 있다. 그래서 wp-shortstat 1.3 wind patch를 만들었으나 오류가 있어서 포스트를 닫았다. 오류를 수정한 후 1.4 버전이 나오면 다시 포스트를 열려고 했으나 이제 wp-shortstat를 그만 사용하기로 마음 먹어 최종 공개한다. 082net을 통해 알게된 wp-slimstat을 사용할 계획이며 wp-shortstat wind patch는 앞으로 1.4 버전이 나오더라도 업데이트 할 계획은 없다. 이 버전은 mbstring iconv에서 모두 잘 작동하며 충분한 테스트를 거쳤다.

사용방법

기존 플러그인 위에 덮어 씌운다
단, 인코딩 변환은 mbstring 이나 iconv 모듈이 필요하다
UTF-8로 인코딩된 워드프레스를 기준으로 작성되었다

효능효과

우리나라 검색 엔진에서 검색해서 들어온 것도 Search Strings에 등록되고 EUC-KR일 경우에는 UTF-8로 변환되어 입력된다

다운로드

WP-ShortStat 1.3 wind patch2 : 다운

등록 검색 엔진

네이버, 다음, 엠파스, 네이트, 파란, 첫눈

라이센스

WP-ShortStat에 라이센스가 따로 적혀있지 않으므로 Wordpress Codex

You may also wish to add a GPL template, to explicitly mention that the plugin is released under the same licence as WordPress.

라는 문장을 따라 GPL로 간주하고 결과적으로 이 플러그인 패치도 GPL이다
즉 수정 및 재배포 뿐 아니라 구워 먹고 삶아 먹는것 모두 가능하다

적용내용

플러그인 파일 내에서 yahoo로 검색을 하면 다음 코드가 나온다

else if (preg_match("/yahoo\./i", $url['host'])) {
parse_str($url['query'],$q);
// Yahoo search terms are in “p”
$searchterms = $q['p'];
}

이를 응용해서 else if 문의 제일 아래에 추가하는데 네이버를 예로 들면 아래와 같다

else if (preg_match("/search\.naver\./i”, $url['host'])) {
parse_str($url['query'],$q);
// Naver search terms are in “query”
$searchterms = $q['query'];
}

바꾸는 곳은 두곳이다

위의 주소는 검색엔진의 주소이다
점을 찍을 경우 \.으로 하는 것만 주의 하고 보다시피 뒤의 .com같은 건 안적는게 낫다

아래의 query는 검색한 후에 주소를 보면 알수 있다.
내가 찾는것이 wordpress라면 주소창에 나온 주소는 아래와 같다
search.naver.com/search.naver?where=nexearch&query=wordpress
&x=0&y=0&hw=1
여기서 보면 query= 다음에 내가 찾는 검색어가 나오는데 다음의 경우에는 q=으로 시작한다
아무튼 이걸 적어주면 된다

그리고 그 아래에

if (isset($searchterms) && !empty($searchterms)) {

이 나오는데 바로 밑에 인코딩 변환 코드를 삽입한다

if ( function_exists('mb_convert_encoding') ) {
$searchterms = mb_convert_encoding($searchterms, 'UTF-8', 'ASCII, UTF-8, EUC-KR');
}
else if ( function_exists('iconv') ) {
if ( !preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs’, $searchterms) )
$searchterms = iconv(’EUC-KR’, ‘UTF-8′, $searchterms);
}

2006년 1월 20일에 공개했던 내용을 수정.

워드프레스 2.0.1에서 2.0.2 업그레이드 방법

Saturday, March 11th, 2006

2.0.1에서 2.0.2로 업그레이드 할때만 적용되는 내용이며 1.x버전이나 2.0버전의 경우는 아래 방법 참조
워드프레스 2.0 업그레이드 방법
워드프레스 2.0에서 2.0.1 업그레이드 방법

가장 확실한 원문 http://codex.wordpress.org/Upgrading_WordPress

조사하면 다 나오는 http://codex.wordpress.org/Upgrading_WordPress#Upgrade_2.0.1_to_2.0.2의 내용을 과학수사를 통해 한글로 재연해봄(번역아님)

2.0.1에서 2.0.2로 업그레이드 할때는 install.php나 upgrade.php를 실행할 필요가 없다. 데이타베이스에 변화를 주지 않기 때문이다. 비교해본 결과 /wp-content/ 폴더는 변화가 없으므로 건드릴 필요가 없다.

시작하기 전에 웬만하면 미리 백업해놓고 하는게 쫄지 않고 할수있어서 좋다.
플러그인은 안꺼도 된다.

1. /wp-admin/ 폴더를 지운다.
2. /wp-includes/ 폴더를 지운다. 단, 한글판을 사용하고 있다면 /wp-includes/languages/ 디렉토리를 백업해 놓는다.
3. index.php 파일이 위치한 워드프레스 루트 디렉토리의 모든 워드프레스 파일들을 지운다. 단, wp-config.php은 지우면 피곤하다.
4. 2.0.2 버전을 다운로드해서 압축을 푼다.
5. /wp-admin/ 와 /wp-includes/ 폴더를 업로드한다.
6. 루트 디렉토리 파일들을 업로드한다.
7. 한글판 사용자는 백업해둔 /wp-includes/languages/ 디렉토리를 업로드한다.

번외. 한글 트랙백 핵 사용자는 기왕 하는김에 http://www.windlike.net/blog/236/에서 2.0.2용 파일을 받아서 덮어씌운다.

워드프레스 2.0에서 2.0.1 업그레이드 방법

Thursday, February 2nd, 2006

워드프레스 2.0 업그레이드 방법에 대한 여러분의 성원에 힘입어 http://codex.wordpress.org/Upgrading_WordPress 의 내용 중에 변화된 부분을 살펴보고 애프터 서비스

2.0 업그레이드에서 플러그인을 안끄고 업그레이드 한 블로거 중에 치명적인 손상을 입은 분도 계십니다 고로..
주의점 : 백업 철저!
더 주의점 : 플러그인을 모두 껐는지 다시 확인!!!

2.0 업그레이드에서 추가된 점
2.0에서 2.0.1로 업그레이드 할 경우 반드시 wp-content/cache 폴더를 지워야 한다
(1.x에서는 이 폴더가 없으므로 신경 안써도 된다)

2.0에서 2.0.1로 업그레이드시에는 위의 추가사항만 주의하고 나머지는 2.0 업그레이드 방법과 같음

워드프레스 2.0 업데이트 방법 포스트로 이동

글자 중간을 자르는 오류 수정

Wednesday, December 28th, 2005

이 문제는 2.0.1버전에서 해결되었습니다(2006. 2. 2)

Ticket #1647
Ticket #2163
Chageset [3368]
Chageset [3369]

unfusion님의 도움으로 문제를 해결하였습니다
깐미씨의 도움으로 영어로 문제 보고를 하였습니다

워드프레스 트랙백 핵 1.5.2 TE 버전에서 수정되었던 사항입니다
1.5.2버전에서 Wordpress측에 버그 보고를 하였으나 전달이 잘 안되었는지 2.0버전에서 엉뚱한 곳만 수정되었습니다
2.1버전에선 꼭 고쳐져서 나오도록 다시 버그 보고를 하겠습니다

적용파일(/wp-includes/functions-post.php) : 다운

워드프레스에서 트랙백을 보낼때 substr이란 함수로 포스트의 내용중에서 253바이트를 자르고 …을 더해서 보내게 됩니다. 1바이트의 문자일때는 상관이 없는데 UTF-8같은 멀티바이트의 문자에선 글자 중간을 자르게 되는 경우도 발생합니다. 그래서 마지막 문자는 깨진 상태로 보내지는데 트랙백을 받는 쪽에서는 그냥 마지막 한글자만 ?로 나오게 될 뿐입니다. 그렇지만 워드프레스는 mb_convert_encoding이란 함수를 통해 자체적으로 트랙백의 인코딩을 변환합니다. 마지막 깨진 문자때문에 워드프레스는 이 트랙백을 UTF-8이 아닌것으로 인식하고 UTF-8로 재변환을 하게 됩니다. 그래서 결과적으로 트랙백이 깨지게 됩니다.

이 hack은 mbstring 모듈을 설치한 블로그에서만 작동됩니다. 만약 설치가 되지 않았다면 hack을 하지 않은 상태와 같이 작동합니다. mbstring 모듈이 설치가 안되었을 경우 부득이한 경우가 아니라면 호스팅업체에 설치 요청을 할 것을 권장합니다. 워드프레스의 자체의 트랙백 변환은 mbstring에서만 작동하고 제가 만든 트랙백 변환은 iconv에서도 작동하지만 mbstring에서 보다 안정적으로 작동합니다.

만약 mb_strcut 함수를 사용할 수 있는 경우 이 함수를 이용하여 글자를 253바이트 이내에서 자른다. mb_strcut과 substr의 차이점은 mb_strcut은 글자를 인코딩이 깨지지 않게 잘라준다.

/wp-includes/functions-post.php를 열어 do_trackback함수 내의

$excerpt = substr($excerpt, 0, 252) . '...';

를 아래와 같이 바꾼다

if ( function_exists('mb_strcut') )
$excerpt = mb_strcut($excerpt, 0, 252, get_settings('blog_charset')) . '...';
else $excerpt = substr($excerpt, 0, 252) . '...';

워드프레스 2.x 트래백핑 인코딩 문제 해결

Tuesday, December 27th, 2005

Wordpress를 사용하다보면 UTF-8과 EUC-KR로 인코딩된 블로그간에 트랙백을 받거나 보낼때 글씨가 깨지게 된다. 이 hack은 다르게 인코딩된 블로그 사이의 트랙백이 깨지지 않게 하기 위한 것이다. UTF-8로 인코딩된 Wordpress 2.0 버전을 기준으로 작성되었다.

새로운 버전의 워드프레스가 나왔을 때 대처하는 요령

이 포스트에 새로운 버전에 대한 파일이 올라오지 않았을 경우 예전 버전용 파일을 업그레이드한 워드프레스에 덧씌우지 마세요. wp-trackback.php 파일과 functions.php 파일만 예전 버전이므로 제대로 작동할리 만무할뿐 아니라 치명적인 오류를 유발할 수 있습니다. 새버전의 파일에서 포스트의 내용에 나온 부분만 수동으로 고치는 방법만이 안전합니다. 이 포스트의 소스를 Copy해서 에디터에 Paste 할 경우에 작은따옴표(’)를 수정하셔야 합니다. mbstring 모듈 사용자는 wp-trackback.php 파일의 $charset에 EUC-KR을 추가함으로써 간단히 받는 트랙백 문제를 해결할 수 있습니다.

다운로드

Wordpress 1.5x용 : 링크
Wordpress 2.0용 : 다운
Wordpress 2.0용 자르는 문제 해결 통합(mbstring사용시 권장) : 다운 설명
Wordpress 2.0.1용 : 다운
Wordpress 2.0.2용 : 다운
Wordpress 2.0.3용 : 다운
Wordpress 2.0.4용 : 다운
Wordpress 2.0.5용 : 다운
Wordpress 2.0.6용 : 다운
Wordpress 2.0.7용 : 다운
Wordpress 2.1 이상 : 링크

다른 해결방법

영팔님이 약간의 hack이 필요한 플러그인을 만드셨습니다.
워드프레스 EUC-KR 트랙백 플러그인(HACK)

정태영님이 받는 트랙백용 플러그인을 만드셨습니다.
Korean Trackback Plugin

사용방법

받는 트랙백은 자동으로 변환된다.
2.0용 버전에서는 보내는 트랙백 사용방법이 바뀌었다. 트랙백 받는 블로그가 내 블로그와 다른 인코딩을 사용할 경우 트랙백 보내는 주소 앞에 !를 붙여서 사용한다. Send trackbacks to: 의 트랙백 주소 적는 곳에 !http://트랙백주소 를 넣는다.
예) !http://www.windlike.net/blog/236/trackback/
데이타베이스에도 인코딩변환되어 나간 트랙백 주소는 !http://…형태로 !이 붙어서 남는다.

같은 인코딩일 경우 그냥 트랙백 주소만 적는다. !를 붙여서 인코딩을 변환하면 오히려 깨진다.
예) http://www.windlike.net/blog/236/trackback/
상대의 인코딩을 알아내는 방법은 브라우져의 보기 - 인코딩 메뉴를 보면 알 수 있다.

주의사항

적용대상 :
- PHP 4.0.6 이상
- mbstring 모듈이나 iconv 모듈 둘 중 하나가 설치되어 있어야 함

확인방법 :
- 직접 호스팅 업체에 문의
- 다음 코드를 에디터를 이용하여 test.php로 저장한 후 브라우져에서 실행한다(미리 작성된 파일 : 다운)

<?php
echo 'PHP version: ' . phpversion() . '<br />';
if ( function_exists('mb_convert_encoding') ) echo 'mbstring OK!<br />';
else echo 'mbstring fail..<br />';
if ( function_exists('iconv') ) echo 'iconv OK!<br />';
else echo 'iconv fail..<br />';
?>

mbstring OK! 가 나오면 mbstring 모듈을 이용할 수 있다(둘 다 OK일 경우 이방법을 권장)
iconv OK! 가 나오면 iconv 모듈을 이용할 수 있다(mbstring fail 일 경우 이 방법으로 한다)
둘다 fail이면 호스팅 업체에서 둘 중 하나를 설치해 줄때까지 불가능하다

라이센스

Wordpress가 GPL이기 때문에 이 hack 역시 GPL을 따른다. 수정 및 재배포 모두 가능함.

지금까지 도움주신 분들

아거님, 입명이님, H.Moon님, BluedSnow님, 지윤님, UNFGroup님, unfusion님, 영팔

받는 트랙백핑 문제 해결(mbstring)

/wp-trackback.php를 열어 $charset에 EUC-KR을 추가한다

$charset = 'ASCII, UTF-8, EUC-KR, ISO-8859-1, JIS, EUC-JP, SJIS’;
mbstring 모듈을 사용할 수 있을 경우 직접 수정해서 사용하면 편리하다.

받는 트랙백핑 문제 해결(iconv)

정규식을 이용한 is_utf8 함수를 만들어 UTF-8인지 확인한 후 iconv 함수로 인코딩을 변환한다.

/wp-trackback.php를 열어 // trackback is done by a POST 위에 아래의 코드를 추가한다. 이는 이해를 돕기 위치이므로 굳이 이곳이 아니라도 적당한 곳에 추가하면 된다.

// Returns true if $string is valid UTF-8 and false otherwise.
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs’, $string);
} // function is_utf8

위 방법은 워드프레스 기본 함수인 seems_utf8()를 사용할 수 있으므로 삭제(참고 : http://082net.com/2006/769/euckr-trackback-hack/)

/wp-trackback.php를 열어

if ( function_exists('mb_convert_encoding') ) {
$title = mb_convert_encoding($title, get_settings('blog_charset'), $charset);
$excerpt = mb_convert_encoding($excerpt, get_settings('blog_charset'), $charset);
$blog_name = mb_convert_encoding($blog_name, get_settings('blog_charset'), $charset);
}

아래에 다음을 추가한다

else if ( function_exists('iconv') ) {
if ( !seems_utf8($title) )
$title = iconv('EUC-KR', 'UTF-8', $title);
if ( !seems_utf8($excerpt) )
$excerpt = iconv('EUC-KR', 'UTF-8', $excerpt);
if ( !seems_utf8($blog_name) )
$blog_name = iconv('EUC-KR', 'UTF-8', $blog_name);
}

보내는 트랙백핑 문제 해결

/wp-includes/functions.php를 열어 trackback 함수를 찾는다

function trackback($trackback_url, $title, $excerpt, $ID) {
global $wpdb, $wp_version;
if ( empty($trackback_url) )
return;
$title = urlencode($title);
$excerpt = urlencode($excerpt);
$blog_name = urlencode(get_settings(’blogname’));
$tb_url = $trackback_url;

를 아래와 같이 바꾼다(굵은 글자가 추가되거나 바뀌는 부분)
$tb_url = $trackback_url;이 위치를 바꾸는 것과
$blog_name = get_settings(’blogname’);이 두부분으로 나뉘어 수정되는것 주의

function trackback($trackback_url, $title, $excerpt, $ID) {
global $wpdb, $wp_version;
if ( empty($trackback_url) )
return;
$blog_name = get_settings(’blogname’);
$tb_url = $trackback_url;
if($trackback_url[0] == ‘!’) {
$trackback_url = substr($trackback_url, 1);
if ( function_exists(’mb_convert_encoding’) ) {
$title = mb_convert_encoding($title, ‘EUC-KR’, ‘UTF-8′);
$excerpt = mb_convert_encoding($excerpt, ‘EUC-KR’, ‘UTF-8′);
$blog_name = mb_convert_encoding($blog_name, ‘EUC-KR’, ‘UTF-8′);
}
else if ( function_exists(’iconv’) ) {
$title = iconv(’UTF-8′, ‘EUC-KR’, $title);
$excerpt = iconv(’UTF-8′, ‘EUC-KR’, $excerpt);
$blog_name = iconv(’UTF-8′, ‘EUC-KR’, $blog_name);
}
}

$title = urlencode($title);
$excerpt = urlencode($excerpt);
$blog_name = urlencode($blog_name);

워드프레스 2.0 업그레이드 방법

Tuesday, December 27th, 2005

Wordpress 2.0.1 버전 추가 내용(2006. 2. 2)
2.0에서 2.0.1로 업그레이드 할 경우 반드시 wp-content/cache 폴더를 지워야 한다
(1.x에서는 이 폴더가 없으므로 신경 안써도 된다)
이 부분만 주의하고 나머지는 같습니다

http://codex.wordpress.org/Upgrading_WordPress 의 내용을 그까이꺼 머 대충 요약(번역이 아님 정확한 내용은 직접 확인하삼)

1. 데이타베이스를 백업하세요

2. 모든 워드프레스 파일을 백업하세요
워드프레스가 들어있는 폴더 전체를 백업하는게 안전합니다.

3. 백업이 잘 되었나 확인하세요

4. 모든 플러그인을 끕니다
관리자 화면에서 Plugin 탭을 누르고 켜져있는 플러그인 모두 Deactivate를 누릅니다

5. 앞의 4단계를 마치지 않고 다음 단계로 넘어가지 마세요

6. 워드프레스 2.0 다운로드 받기
http://wordpress.org/download/ 여기서 받아서 압축을 푸세요

7. 예전 워드프레스 파일 지우기

지우지 말하야 할 파일
* wp-config.php 파일
* wp-content 폴더
* wp-images 폴더
* wp-includes/languages/ 폴더 - 랭귀지 파일을 사용하고 있다면 이 폴더를 지우지 마세요
* .htaccess file - 퍼머링크를 변경해 사용하거나 이 파일에 다른 것들을 적용했을때는 지우지 마세요
* 사용자의 자료들이나 플러그인 등등

지워야 할 파일
* wp-*, readme.html, wp.php, xmlrpc.php, and license.txt 등등 워드프레스가 깔려있는 루트폴더의 파일들(wp-config.php와 .htaccess 파일을 제외)
* wp-admin 폴더
* wp-includes 폴더 단, 랭귀지 파일을 사용한다면 wp-includes/languages/ 폴더는 지우지 마세요

8. 워드프레스 2.0 업로드

9. 업그레이드
http://워드프레스 주소/wp-admin/upgrade.php를 실행합니다

10. 퍼머링크와 .htaccess 업데이트
필요한 사람만 하면됩니다

11. 플러그인 업데이트
워드프레스 2.0에서 사용가능한 플러그인 목록
단, 최신버전인지 확인하세요. 위 목록에 나와있는 플러그인의 최신버전은 2.0에서도 바로 사용가능합니다

12. 플러그인 재사용
관리자 화면의 Plugin탭에서 activate를 눌러 필요한 플러그인을 다시 사용합니다
새로 추가된 WordPress Database Backup Plugin을 사용하기 위해선 wp-content 폴더의 퍼미션을 666이나 777로 변경해야 합니다

13. 새롭게 변경된 사항들에 대해 알아봅니다
머 굳이 알아볼꺼 까지야..

워드프레스 트랙백핑 인코딩 문제 해결

Monday, March 7th, 2005

Wordpress를 사용하다보면 UTF-8과 EUC-KR로 인코딩된 블로그간에 트랙백을 받거나 보낼때 글씨가 깨지게 된다. 이 hack은 다르게 인코딩된 블로그 사이의 트랙백이 깨지지 않게 하기 위한 것이다. Wordpress 1.5 버전을 기준으로 작성되었다.

2.0 버전

새로 포스트를 작성하였습니다
http://www.windlike.net/blog/236/
2005.12.27 15:57

1.5.2 버전(UTF-8 전용) TE

unfusion님이 SE버전에서 트랙백이 깨지는 현상에 대해 보고해 주셨습니다. 여러가지 테스트 결과 트랙백 hack의 문제가 아닌 워드프레스 자체의 결함으로 밝혀졌습니다. 워드프레스에서 트랙백을 보낼때 substr이란 함수로 포스트의 내용중에서 253바이트를 자르고 …을 더해서 보내게 됩니다. 1바이트의 문자일때는 상관이 없는데 UTF-8같은 멀티바이트의 문자에선 글자 중간을 자르게 되는 경우도 발생합니다. 그래서 마지막 문자는 깨진 상태로 보내지는데 트랙백을 받는 쪽에서는 그냥 마지막 한글자만 ?로 나오게 될 뿐입니다. 그렇지만 워드프레스는 mb_convert_encoding이란 함수를 통해 자체적으로 트랙백의 인코딩을 변환합니다. 마지막 깨진 문자때문에 워드프레스는 이 트랙백을 UTF-8이 아닌것으로 인식하고 UTF-8로 재변환을 하게 됩니다. 그래서 결과적으로 트랙백이 깨지게 됩니다.

이 문제를 해결하기 위해 여러가지 방안을 생각했습니다. 기왕이면 워드프레스를 가장 조금 고치고 원래의 코드를 살릴 수 있는 방안. 그리고 버그보고를 통해 정식으로 패치될 수 있는 방안. 다른 블로그툴에서 보낼때 깨져서 들어오는 경우에 대비하기 위해선 받는 쪽에서 수정하는게 좋습니다. 하지만 근본적으로 문제를 해결하는 방법이 아닌데다가 기존 소스의 깔끔함을 해치는 방법이라 보내는 쪽에서 해결하는 방법을 택했습니다. 보내는 쪽을 고치는 방법의 또하나의 장점은 만약 다음 버전에서 이 버그가 수정이 되지 않더라도 이 hack을 쓰지 않은 블로그에 보낼때도 깨지지 않는다는 점입니다.
이 hack은 mbstring 모듈을 설치한 블로그에서만 작동됩니다. 만약 설치가 되지 않았다면 hack을 하지 않은 상태와 같이 작동합니다. mbstring 모듈이 설치가 안되었을 경우 부득이한 경우가 아니라면 호스팅업체에 설치 요청을 할 것을 권장합니다. 워드프레스의 자체의 트랙백 변환은 mbstring에서만 작동하고 제가 만든 트랙백 변환은 iconv에서도 작동하지만 mbstring에서 보다 안정적으로 작동합니다.

만약 mb_strcut 함수를 사용할 수 있는 경우 이 함수를 이용하여 글자를 253바이트 이내에서 자른다. mb_strcut과 substr의 차이점은 mb_strcut은 글자를 인코딩이 깨지지 않게 잘라준다.

/wp-includes/functions.php를 열어 do_trackback함수 내의

$excerpt = substr($excerpt, 0, 252) . '...';

를 아래와 같이 바꾼다

if ( function_exists('mb_strcut') )
$excerpt = mb_strcut($excerpt, 0, 252, get_settings('blog_charset')) . '...';
else $excerpt = substr($excerpt, 0, 252) . '...';

새로 포스트를 열어서 쓰려다 트랙백 변환에 관련된 내용이라 이 포스트에 추가합니다.
1.5.2 SE버전에 위에 있는 새로운 hack을 추가한 1.5.2 TE버전 : 다운로드
2005.9.2 05:16

1.5.2 버전(UTF-8 전용) SE

H.Moon님이 코멘트로 트랙백 hack이 ecto에서 문제를 일으킨다고 알려주셨습니다. 제가 default parameter에 대한 착각을 해서 생긴 문제입니다. 선언된 함수의 parameter보다 호출될 때의 parameter가 적을때 자동으로 부족한 parameter에 null값이 들어간다고 착각을 했습니다. 그래서 function overloading을 하지 않아도 hack을 한 후에도 기존의 함수와 새로 수정한 함수를 모두 쓸수 있다고 생각했는데 default parameter를 사용하려면 선언할때 미리 값을 주어야 합니다. 수정된 부분은 do_trackbakcs함수와 trackback함수의 인코딩관련 parameter에 디폴트로 null값을 주었습니다. 즉 다른 프로그램 또는 워드프레스 내에서 기존의 함수를 그대로 사용하게 될 경우에도 선언된 것보다 호출할 때의 parameter부족때문에 에러를 내지 않습니다. 아래 버전에서 다른 문제점은 보고되지 않았으므로 보통의 경우 굳이 이 버전으로 바꾸실 필요는 없습니다. 하지만 ecto같은 블로깅툴이나 다른 프로그램에 연동해 사용할 경우 필수이며 혹시모를 문제에 대비해 이 버전으로 바꾸실 것을 권장합니다.
다운로드
2005.8.29 03:25

1.5.2 버전(UTF-8 전용)

UNFGroup에서의 트랙백을 보니 워드프레스 1.5.2 버젼이 나왔더군요. 직접 비교해보니 트랙백 내용과 같이 1.5.1.3 버전에서는 post.php만 바뀌었습니다. 놀다보니 방학은 끝나가고.. 플러그인은 아직 손도 안 댔는데..
다운로드
2005.8.15 15:51

1.5.1.3 버전(UTF-8 전용)

심심하다 싶으면 새버전이 나오는 군요.. 이제 방학도 했으니 아예 플러그인으로 만들어봐야 겠습니다. 일단은 좀 놀다가..
다운로드
2005.7.5 14:47

1.5.1.2 버전(UTF-8 전용)

Wordpress 1.5.1.1 버전과 동일합니다. 1.5.1.1 버전용을 받아 사용하세요.
Security Update의 내용만 보고 트랙백 패치파일엔 변화가 없겠구나 했는데 지윤님의 트랙백을 보고 에디터로 직접 비교해보니 /wp-includes/functions.php에 한줄이 추가되었습니다.
다운로드
2005.5.29 21:36

1.5.1.1 버전(UTF-8 전용)

Wordpress 1.5.1.1 버전용으로 mbstring과 iconv 통합입니다. UTF-8 인코딩 전용으로 EUC-KR용은 요청이 있으면 만들겠습니다.
다운로드
2005.5.22 01:58

1.5.1 버전(mbstring사용 UTF-8 전용)

Wordpress 1.5.1 버전이 나왔습니다. 이 패치파일은 1.5.1 버전 용으로 UTF-8로 된 블로그에서 mbstring을 사용하도록 만들었습니다. iconv용과 EUC-KR용은 요청이 있으면 만들겠습니다. 받는 트랙백 부분은 sanulim님이 달아주신 코멘트를 이용하여 만들었으며 보내는 트랙백은 1.5 버전과 동일합니다.
다운로드
2005.5.19 20:00

도움주신분들

이 포스트가 알려지도록 도움 주신 아거님과 테스트에 도움주신 입명이님, H.Moon님, BluedSnow님께 감사드립니다
2005. 4. 6 00:41

통합패치

아래에 있는 4개의 다른 패치적용 파일을 하나로 합한 파일이다. UTF-8과 EUC-KR에 상관없이 작동한다. mbstring이 있으면 mbstring을 사용하고 없을경우 iconv를 사용한다. 만약 둘 다 없는 경우 체크박스가 나오지 않는다. 그러므로 체크박스가 나오지 않는다면 설치를 잘못 하였거나 호스팅 업체에서 지원을 하지 않는 경우이다. 일반적인 경우 통합버젼 사용을 권장한다.

압축을 푼 후 워드프레스가 설치된 폴더에 복사한다. (예 : /blog)
6개의 파일이 덮어쓰기되면 파일 복사가 제대로 된 것임.
통합패치 : 다운

주의사항

적용대상 :
- PHP 4.0.6 이상
- mbstring 모듈이나 iconv 모듈 둘 중 하나가 설치되어 있어야 함

확인방법 :
- 직접 호스팅 업체에 문의
- 다음 코드를 에디터를 이용하여 test.php로 저장한 후 브라우져에서 실행한다(미리 작성된 파일 : 다운)

<?php
echo 'PHP version: ' . phpversion() . '<br />';
if ( function_exists('mb_convert_encoding') ) echo 'mbstring OK!<br />';
else echo 'mbstring fail..<br />';
if ( function_exists('iconv') ) echo 'iconv OK!<br />';
else echo 'iconv fail..<br />';
?>

mbstring OK! 가 나오면 mbstring 모듈을 이용할 수 있다(둘 다 OK일 경우 이방법을 권장)
iconv OK! 가 나오면 iconv 모듈을 이용할 수 있다(mbstring fail 일 경우 이 방법으로 한다)
둘다 fail이면 호스팅 업체에서 둘 중 하나를 설치해 줄때까지 불가능하다

라이센스

Wordpress가 GPL이기 때문에 이 hack 역시 GPL을 따른다. 수정 및 재배포 모두 가능함.

사용방법

받는 트랙백은 자동으로 변환된다.
보내는 트랙백은 트랙백 보내는 주소 오른쪽에 생긴 체크박스를 수동으로 체크함으로서 변환한다. 트랙백 받는 블로그가 내 블로그와 다른 인코딩을 사용할 경우 체크한다. 같은 인코딩인데 체크할 경우 오히려 트랙백이 깨지게 되므로 인코딩이 같을 경우엔 체크하지 않고 트랙백을 보낸다.
상대의 인코딩을 알아내는 방법은 브라우져의 보기 - 인코딩 메뉴를 보면 알 수 있다.

패치적용 파일

이 파일은 아래의 내용을 직접 수정하기 번거로운 사람을 위한 파일로 아래 적힌 수정 방법을 모두 적용하여 압축한 파일이다.
압축을 푼 후 워드프레스가 설치된 폴더에 복사한다. (예 : /blog)
6개의 파일이 덮어쓰기되면 파일 복사가 제대로 된 것임.
Wordpress 1.5 UTF-8 용 수정파일(mbstring 모듈 사용) : 다운
Wordpress 1.5 EUC-KR 용 수정파일(mbstring 모듈 사용) : 다운
Wordpress 1.5 UTF-8 용 수정파일(iconv 모듈 사용) : 다운
Wordpress 1.5 EUC-KR 용 수정파일(iconv 모듈 사용) : 다운

받는 트랙백핑 문제 해결(mbstring)

mb_detect_encoding을 이용하여 들어오는 트랙백핑의 인코딩을 검사한후 blog_charset에 설정된 내 블로그의 인코딩으로 변환해 준다.

/wp-trackback.php를 열어

$title = mb_convert_encoding($title, get_settings('blog_charset'), $charset);
$excerpt = mb_convert_encoding($excerpt, get_settings('blog_charset'), $charset);
$blog_name = mb_convert_encoding($blog_name, get_settings('blog_charset'), $charset);

를 아래와 같이 바꾼다($charset이 수정되는 것임)

$title = mb_convert_encoding($title, get_settings('blog_charset'), mb_detect_encoding($title, 'UTF-8, EUC-KR') );
$excerpt = mb_convert_encoding($excerpt, get_settings('blog_charset'), mb_detect_encoding($excerpt, 'UTF-8, EUC-KR') );
$blog_name = mb_convert_encoding($blog_name, get_settings('blog_charset'), mb_detect_encoding($blog_name, 'UTF-8, EUC-KR') );

받는 트랙백핑 문제 해결(iconv)

정규식을 이용한 is_utf8 함수를 만들어 UTF-8인지 확인한 후 iconv 함수로 인코딩을 변환한다.

/wp-trackback.php를 열어 // trackback is done by a POST 위에 아래의 코드를 추가한다. 이는 이해를 돕기 위치이므로 굳이 이곳이 아니라도 적당한 곳에 추가하면 된다.

// Returns true if $string is valid UTF-8 and false otherwise.
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs’, $string);
} // function is_utf8

같은 파일(/wp-trackback.php)의

if ( function_exists('mb_convert_encoding') ) {
$title = mb_convert_encoding($title, get_settings('blog_charset'), $charset);
$excerpt = mb_convert_encoding($excerpt, get_settings('blog_charset'), $charset);
$blog_name = mb_convert_encoding($blog_name, get_settings('blog_charset'), $charset);
}

를 아래와 같이 바꾼다(UTF-8의 경우)

if ( !is_utf8($title) ) $title = iconv('EUC-KR', get_settings('blog_charset'), $title);
if ( !is_utf8($excerpt) ) $excerpt = iconv('EUC-KR', get_settings('blog_charset'), $excerpt);
if ( !is_utf8($blog_name) ) $blog_name = iconv('EUC-KR', get_settings('blog_charset'), $blog_name);

EUC-KR의 경우는 아래와 같이 바꾼다 (if문 조건에서 !이 빠지고 ‘EUC-KR’이 ‘UTF-8′로 바뀜)

if ( is_utf8($title) ) $title = iconv('UTF-8', get_settings('blog_charset'), $title);
if ( is_utf8($excerpt) ) $excerpt = iconv('UTF-8', get_settings('blog_charset'), $excerpt);
if ( is_utf8($blog_name) ) $blog_name = iconv('UTF-8', get_settings('blog_charset'), $blog_name);

보내는 트랙백핑 문제 해결

1. 먼저 EUC-KR로 트랙백핑을 보낼지를 선택하는 체크박스를 만든다. 체크박스를 체크하면 char_encoding에 value값인 “EUC-KR”이 전달된다. 일반폼과 advanced폼 모두 바꿔주기 위해 두개의 파일을 수정한다. (EUC-KR 사용자 : 이 단계에서 “EUC-KR”을 “UTF-8″로 바꿔서 수정한다. 나머지 부분은 UTF-8 사용자와 같이 수정한다.)

/wp-admin/edit-form.php를 열어

<input type="text" name="trackback_url" style="width: 360px" id="trackback" tabindex="7" /></p>

를 아래와 같이 바꾼다 (첫째줄의 </p>이 추가되는 줄로 옮겨가는 것 주의)

<input type="text" name="trackback_url" style="width: 360px" id="trackback" tabindex="7" />
<label for="char_enc"><input type="checkbox" name="char_encoding" id="char_enc" value="EUC-KR" /> EUC-KR</label></p>

/wp-admin/edit-form-advanced.php를 열어

<td>< ?php echo $form_trackback; ?> <br />

를 아래와 같이 바꾼다

<td>< ?php echo $form_trackback; ?> <label for="char_enc"><input type="checkbox" name="char_encoding" id="char_enc" value="EUC-KR" /> EUC-KR</label><br />

2. do_trackbakcs 함수에 폼으로부터 넘겨받은 $char_encoding값을 인수로 전달한다.

/wp-admin/post.php를 열어 do_trackbacks를 찾은 후

do_trackbacks($post_ID);

를 아래와 같이 바꾼다(2곳을 수정해야 함)

do_trackbacks($post_ID, $_POST['char_encoding']);

3. do_trackbacks 함수가 선언된 곳을 찾아서 매개변수 $char_enc를 추가하고 이 값을 trackback 함수의 인수로 넘긴다.

/wp-includes/functions-post.php를 열어

function do_trackbacks($post_id) {

를 아래와 같이 바꾼다

function do_trackbacks($post_id, $char_enc) {

또 몇줄 밑의

trackback($tb_ping, $post_title, $excerpt, $post_id);

를 아래와 같이 바꾼다

trackback($tb_ping, $post_title, $excerpt, $post_id, $char_enc);

4. trackback함수가 선언된 곳을 찾아서 매개변수 $encoding을 추가한다. $encoding에 값이 들어가 있으면 mb_convert_encoding을 이용하여 트랙백핑 보낼 제목, 요약, 블로그이름을 $encoding의 값으로(체크박스의 value값, 여기서는 EUC-KR) 인코딩을 변환한다. 체크박스가 선택되지 않아 $encoding에 값이 없으면 인코딩을 변환하지 않고(여기서는 utf-8) 트래픽핑을 보낸다.

/wp-includes/functions.php를 열어

function trackback($trackback_url, $title, $excerpt, $ID) {
global $wpdb;
$title = urlencode($title);
$excerpt = urlencode($excerpt);
$blog_name = urlencode(get_settings('blogname'));

mbstring 모듈을 사용할 경우에는 아래와 같이 바꾸고

function trackback($trackback_url, $title, $excerpt, $ID, $encoding) {
global $wpdb;
$blog_name = get_settings('blogname');
if($encoding) {
$title = mb_convert_encoding($title, $encoding, get_settings('blog_charset'));
$excerpt = mb_convert_encoding($excerpt, $encoding, get_settings('blog_charset'));
$blog_name = mb_convert_encoding($blog_name, $encoding, get_settings('blog_charset'));
}
$title = urlencode($title);
$excerpt = urlencode($excerpt);
$blog_name = urlencode($blog_name);

iconv 모듈을 사용할 경우에는 아래와 같이 바꾼다

function trackback($trackback_url, $title, $excerpt, $ID, $encoding) {
global $wpdb;
$blog_name = get_settings('blogname');
if($encoding) {
$title = iconv(get_settings('blog_charset'), $encoding, $title);
$excerpt = iconv(get_settings('blog_charset'), $encoding, $excerpt);
$blog_name = iconv(get_settings('blog_charset'), $encoding, $blog_name);
}
$title = urlencode($title);
$excerpt = urlencode($excerpt);
$blog_name = urlencode($blog_name);

무버블 타입에서 크리에이티브 커먼스 2.0 사용하기

Monday, January 17th, 2005

Arvind블로그에서 인용:

In MT, use of the <MTBlogCCLicenseURL> has been hardcoded to the 1.0 licenses, however these have been outdated and v2.0 of the licenses have been released a while ago. So lets hack the files so we can still use the tag.

You’ll need two files, lib/MT/Util.pm and php/lib/cc_lib.php. Find in them the following line

http://creativecommons.org/licenses/$code/1.0/

and replace it with

http://creativecommons.org/licenses/$code/2.0/

Posted by Arvind at October 16, 2004 08:09 PM

위의 문장을 요약하자면 CC License 2.0이 나왔음에도 무버블 타입에선 여전히 1.0을 사용하기 때문에 수정이 필요하다는 것이다. 위에 나온 방법대로 고치면 링크는 2.0으로 바뀌지만 라이센스 마크는 1.0 것을 그대로 사용하게 된다. 라이센스 마크가 2.0으로 보이도록 하기 위해서는 다른곳도 수정을 해주어야 한다. <$MTBlogCCLicenseImage$>가 이미지의 위치를 나타내는데 아래와 같이 수정하자.
lib/MT/Template/Context.pm와 php/lib/function.MTBlogCCLicenseImage에서 아래줄을 찾아서

($cc eq 'pd' ? 'norights' : 'somerights');

아래와 같이 바꾸도록 한다

($cc eq 'pd' ? 'norights' : 'somerights20‘);