ひとつ前の記事でご紹介した、過去に書いたブログの記事をランダムに抽出し、Twitterに自動投稿する「Tweet Old Post
実はマルチバイト非対応という日本語ユーザーには致命的な問題があるわけですけど、コアファイルをいじることで、簡単に対応させることができます。

「Tweet Old Post」は、そもそもマルチバイト文字である日本語で扱われることが想定されていない仕様になっています。

そのため、日本語は2倍の文字数で計算されてしまうため、タイトルが長くなると、Twitterに投稿しきれない長さになると判断され、よくわからん点字みたいな状態で投稿されてしまいます。

というわけでマルチバイトに対応させましょう。

つーても難しい話ではなく、これから記載するコードをコピーして、該当箇所に上書きしてしまえばいいだけ。

修正するファイルは、
plugins > tweet-old-post
に入っているtop-core.phpというファイルになります。

ファイルを開いたら、305行目から338行目までが該当箇所を書き換えていきます。

バージョンによって行数が異なります。
以下のコードからキーワードを抜き出して、該当箇所を検索して探してみましょう。
//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;
}

これでファイルを上書き保存してしまえば、あとは問題なく投稿されるようになります。

「点字が投稿されるッッッ!!!!?」

という人は、このコードの差し替えを行って頂ければ大丈夫ですよ。

ただ、プラグインのバージョンアップがあった場合に、まだマルチバイト対応されていないと元に戻ってしまうというのがね・・・。

是非プラグイン作者にはマルチバイトへの対応をしてもらいたいところです。
仮に戻ってしまった場合は、また書き換えるしかないので、そこのところはご容赦を。

Commentsコメントしてもらえると励みになります