3 Trackbackの文字化け対策

May 23, 2005. Tags: WordPress.

WordPressのtrackbackがたまに文字化けする件でワタヤさん@MacFeelingと検討した結果、自分の打ったtrackbackが相手のblogで文字化けするのを防ぐためには、送信するtrackback pingのPOST部分にcharsetの指定を入れるのが有効だろうと結論しました。少なくともWordPressではPOST部分のcharsetを取得するし、他のblogシステムでも対応しているものがあれば文字化けのリスクを減らせます。

自分の所に来たtrackbackが化けるケースは実際あまり気にならなかったりするわけですが、自分のが化けるのはOops.. :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 = wp_specialchars( strip_tags( $title ) );
$title = (strlen($title) > 250) ? substr($title, 0, 250) . '...' : $title;
$excerpt = strip_tags($excerpt);
$excerpt = (strlen($excerpt) > 255) ? substr($excerpt, 0, 252) . '...' : $excerpt;

以上を以下に変更します。

$title = wp_specialchars( strip_tags( $title ) );
$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;
}

:grin:

3 Responses to 'Trackbackの文字化け対策' (RSS)

Trackbacks & Pingbacks (Trackback URI)

  1. Trackback by aoiro_blog - May 30, 2005 @ 11:45 pm

    トラックバックの文字化け対策

    うちのサイトは、トラックバックするほどのネタが無いのですが、して頂いたときのために対策をしてみました。
    参考元:matopc :: computing » Blog Archive » Trackbackの文字化け対策
    これで解...

  2. Pingback by matopc :: computing » Re: Trackback - December 12, 2005 @ 11:40 pm

    [...] matopc :: computing » Trackbackの文字化け対策 MacFeeling » トラックバックの文字化け [...]

Comments

  1. Comment by Yukikaze - August 1, 2005 @ 9:07 am

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

Leave a Comment