글자 중간을 자르는 오류 수정
이 문제는 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) . '...';








December 28th, 2005 at 3:22 am
큰 도움 감사드립니다.
December 28th, 2005 at 6:29 pm
danew님께
감사주셔서 감사합니다^^
오늘 확인해보니 이 내용이 소스에 반영되었더군요
아마 2.1이 되던 2.0.1이 되던 다음 버전엔 이 핵은 필요없을 거 같습니다
December 30th, 2005 at 11:36 am
좋은 글 잘 읽고 있습니다.
저도 2.0으로 업글 해야하는데, 아직 못하고 있네요.
업글할 때 많은 도움이 될 듯 하네요.
새해에는 하고자 하는 일 모두 잘 되시길 바라겠습니다.
새해 복 많이 받으세요.
December 30th, 2005 at 4:16 pm
엉뚱이님께
감사합니다^^
엉뚱이 님도 새해 복 많이 받으시고
건강하시길 빕니다
January 13th, 2006 at 1:56 pm
오늘 호스팅 업체에 얘기해서 mbstring 을 설치했습니다.
그런데 본문 안에 있는 functions.php 는 혹시 function-post.php 아닌가요?
아무리 찾아도 없더라구요, 해당하는 라인이 말이죠.
January 13th, 2006 at 2:17 pm
H.Moon님께
아 그렇군요 제가 실수했습니다..
수정했습니다^^
February 2nd, 2006 at 3:54 am
2.0.1 에서 이 부분 수정된 모양입니다. 고치려고 봤더니 트랙백이 안보내지던 부분과 함께 수정된 것 같네요.
February 2nd, 2006 at 6:27 am
네 저번에 엉뚱한 짓만 하더니 이번엔 잘 고쳤습니다
unfusion님의 도움이 컸습니다^^
February 2nd, 2006 at 6:40 am
별 말씀을요. 전 이상 생겨서 보고 드린것 밖에 없는데요… 참 wp-shortstat하고 akismet 쓰십니까? wp-shortstat은 대충 문제 해결 했는데 akismet이 업데이트 후에 api 키가 틀리다는 메시지가 나오네요.