3 Trackbackの文字化け対策
May 23, 2005. Tags: WordPress.WordPressのtrackbackがたまに文字化けする件でワタヤさん@MacFeelingと検討した結果、自分の打ったtrackbackが相手のblogで文字化けするのを防ぐためには、送信するtrackback pingのPOST部分にcharsetの指定を入れるのが有効だろうと結論しました。少なくともWordPressではPOST部分のcharsetを取得するし、他のblogシステムでも対応しているものがあれば文字化けのリスクを減らせます。
自分の所に来たtrackbackが化けるケースは実際あまり気にならなかったりするわけですが、自分のが化けるのはOops..
ですから。
コード変更はワタヤさんの記載を引用させてもらいます。
MacFeeling » トラックバックの文字化け
/wp-includes/functions.php
// Send a 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;
$url = urlencode(get_permalink($ID));
$charset = get_settings('blog_charset');
$query_string = "title=$title&url=$url&blog_name=$blog_name&excerpt=$excerpt&charset=$charset";
Trackbackの抜粋処理
ついでにといってはなんですが。。Trackback受信時に自動的に文字数を切り詰めるのですが、substr ()だと2バイト文字の途中で切れて文字コードが崩れることがあります(「?...」となる場合)。Comments Feedでvalidationエラーが出ることがあるので、PHPがサポートしている場合はmb_substr ()を使うように変更してみます。:grin:
/wp-trackback.php, line 72-
$title = (strlen($title) > 250) ? substr($title, 0, 250) . '...' : $title;
$excerpt = strip_tags($excerpt);
$excerpt = (strlen($excerpt) > 255) ? substr($excerpt, 0, 252) . '...' : $excerpt;
以上を以下に変更します。
$excerpt = strip_tags($excerpt);
if ( function_exists('mb_substr') && function_exists('mb_strlen') ) {
$title = (mb_strlen($title) > 150) ? mb_substr($title, 0, 150) . '...' : $title;
$excerpt = (mb_strlen($excerpt) > 205) ? mb_substr($excerpt, 0, 202) . '...' : $excerpt;
} else {
$title = (strlen($title) > 250) ? substr($title, 0, 250) . '...' : $title;
$excerpt = (strlen($excerpt) > 255) ? substr($excerpt, 0, 252) . '...' : $excerpt;
}


文字化け紹介ありがとうございます。
早速取り入れてみました:razz: