Tweet Old Postが「…」と表示されるので日本語対応させる方法

Tweet Old Postが「…」と表示されるので日本語対応させる方法

2013/09/20 0 投稿者: jinnaitakumi

Tweet Old Postを復活させました、@jinnaitakumiです!

Tweet Old Postはブログの過去記事を自動でツイートしてくれる便利なプラグインですが、日本語のタイトルが「…」になってしまうので、それを修正しました。

この記事の執筆時点でのTweet Old Postのバージョンは4.0.7です。参考までに。

Tweet Old Postをひさしぶりに実装

いつごろの話か忘れましたが、Tweet Old Postがけっこうひどいバグで、アップデートしたらブログが表示されなくなることがありました。

とっくに修正されていたんですが、そのときに削除したまま放置していました。

ですが、やっぱり過去記事をポストしたほうが、何かとおいしいんじゃないかと思って、実装し直すことに。

すると案の定、日本語のタイトルが「…」とかになってちゃんと投稿されない現象が。

これじゃあ、困るので、日本語タイトルもしっかり表示されるように修正しました。

日本語対応させる

mbdbのこの記事を参考に。

[browser-shot width=”300″ url=”http://mbdb.jp/hacks/tweet_old_post_rewritten_33.html”]WPプラグイン「Tweet Old Post」の書き換えるべき33行 | [M] mbdb

この記事中盤にあるコードと、プラグインのソースコードの一部を差し替えると、ちゃんと動作してくれます。

編集するTweet Old Postのファイルは

wp-content > plugins > tweet-old-post > top-core.php

のtop-core.phpです。

以下のコードをtop-core.phpの402行目〜433行目(バージョン4.0.7の場合)のコードと差し替えます。

//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 = 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;
}

おそらくは「strlen」とか「substr」の頭に「mb_」を付ける修正を行っているのだと思います。
(他にもあるかもだけど)

バージョンが違って何行目か分からない場合は、コメント部分(「//」ではじまってるところ)をコピペして、検索かけると分かると思います。

とりあえずこれで「…」表示は治るのでめでたしめでたし。

おわりに

以前にもこの作業をやっていたんですが、ブログにやり方を残してなくて、ちょっと遠回りをしてしまいました。

なので、とりあえずブログ関連でいじったところは逐一、書いていくことにします。