ブログの過去記事をランダムにTwitterでつぶやくWordPressプラグイン「Tweet old post」ですが、日本語のマルチバイト文字に対応していないために、Twitterで「… http://example.com/123」のように日本語の部分が「…」とツイートされてしまいます。
この不具合を修正するには、「Tweet old post」のソースコードを少し修正してあげることで、日本語のタイトルなども正常にツイートされるようになります。
WordPress › Tweet Old Post « WordPress Plugins
WordPress管理画面のメニューにある「プラグイン」の「プラグイン編集」に移動します。
「編集プラグインを選択」で「Tweet old post」を選択して「選択」ボタンをクリック。
「tweet-old-post/top-core.php」を編集します。
「tweet-old-post/top-core.php」の以下の部分にある「strlen」を「mb_strlen」に、「substr」を「mb_substr」、「strrpos」を「mb_strrpos」に全て変更します。
この作業で間違ってしまうと、他の不具合を誘発してしまう可能性が高いので、一行ずつ慎重に作業してください。
//Shrink a tweet and accompanying URL down to 140 chars. function set_tweet_length($message, $url, $twitter_hashtags="", $hashtag_length=0) { $tags = $twitter_hashtags; $message_length = strlen($message); $url_length = strlen($url); //$cur_length = strlen($tags); if ($hashtag_length == 0) $hashtag_length = strlen($tags); if ($twitter_hashtags != "") { if (strlen($tags) > $hashtag_length) { $tags = substr($tags, 0, $hashtag_length); $tags = substr($tags, 0, strrpos($tags, ' ')); } $hashtag_length = strlen($tags); } if ($message_length + $url_length + $hashtag_length > 140) { $shorten_message_to = 140 - $url_length - $hashtag_length; $shorten_message_to = $shorten_message_to - 4; //$message = $message." "; if (strlen($message) > $shorten_message_to) { $message = substr($message, 0, $shorten_message_to); $message = substr($message, 0, strrpos($message, ' ')); } $message = $message . "..."; } return $message . " " . $url . " " . $tags; }
上記を、以下のように修正するとOKです。
//Shrink a tweet and accompanying URL down to 140 chars. function set_tweet_length($message, $url, $twitter_hashtags="", $hashtag_length=0) { $tags = $twitter_hashtags; $message_length = mb_strlen($message); $url_length = mb_strlen($url); //$cur_length = mb_strlen($tags); if ($hashtag_length == 0) $hashtag_length = mb_strlen($tags); if ($twitter_hashtags != "") { if (mb_strlen($tags) > $hashtag_length) { $tags = mb_substr($tags, 0, $hashtag_length); $tags = mb_substr($tags, 0, mb_strrpos($tags, ' ')); } $hashtag_length = mb_strlen($tags); } if ($message_length + $url_length + $hashtag_length > 140) { $shorten_message_to = 140 - $url_length - $hashtag_length; $shorten_message_to = $shorten_message_to - 4; //$message = $message." "; if (mb_strlen($message) > $shorten_message_to) { $message = mb_substr($message, 0, $shorten_message_to); $message = mb_substr($message, 0, mb_strrpos($message, ' ')); } $message = $message . "..."; } return $message . " " . $url . " " . $tags; }
これで、日本語タイトルの過去記事も「Tweet old post」でランダムにつぶやくことが可能になります。