過去記事をツイートする「Tweet Old Post」を使うなら絶対やるべき10行のおまじない!

このエントリーをはてなブックマークに追加

シェア

SPONSORED LINK

twitter_oldpost



過去記事をランダムにツイートしてくれるWordpressプラグイン「Tweet Old Post」をご存知でしょうか。


使い方は、ブロガー仲間の @matubiz さんがわかりやすく解説しています。



[wordpress]過去記事をランダムにツイートしてくれる「Tweet Old Post」プラグイン! | matuダイアリー 



このブログも記事が少しずつ増えてきたので、昨日から使い始めました。


そして、遂に一発目が発動!


【過去記事】:... http://tinyurl.com/3dvkcfo
@tomos2006
ともす(がじぇぎみ)



な、なにこの点字…。恐い…。


本来はこうなるはずだったのに。


【過去記事】: タイムラインから写真だけ抜粋し、Twitterをフォトアルバムにしてしまう、2つのiPhoneアプリを比較! http://tinyurl.com/3dvkcfo


タイトルが完全に抜け落ちてますな…。


そこでオプション画面をチェックしてみるも、関係ありそうな設定も無く。。


「こんな事になってるのは、まさか自分だけ…?」と思って、TLを覗くと…


昔書いた。:... http://bit.ly/lEHO2k
@OZPA
ハセガワ オツパ(すうどんけい)



おまえもか!


@ozpa さんのおかげで、皆さん同じ問題で悩んでることがわかりました。


そこでphpコードをチェックしたところ、原因がわかりましたよ。



タイトルが消えてしまう原因


皆さんお気づきかもしれませんが、タイトルが長すぎるためです。

Twitterの140文字制限オーバーすると、タイトルが丸々消えてしまいます。



140文字オーバーしてないはずなのにタイトル消えるんだけど…



そうなんですよ。そんな単純な問題じゃない。

なぜなのか。


文字数をバイト数でカウントしているという超残念仕様でした。


日本語のようなマルチバイト文字を扱うことが想定されていない作りなんですね。

簡単に言うと、


  • マルチバイト非対応: 「あいうえお」← これで10文字扱い
  • マルチバイト対応: 「あいうえお」 ← これで5文字扱い


つーことです。


それでは、コードを弄って、マルチバイト対応にしちゃいましょう。



PHPコードを修正


“wp-content/plugins/tweet-old-post/top-core.php” を開いてください。

205~219行目のコードを見てみましょう。


phpコードを弄ります。
バックアップを取るなどして、ご自身の責任で行ってください。


function set_tweet_length($message, $url, $twitter_hashtags="") {

    $message_length = strlen($message);
    $url_length = strlen($url);
    $hashtags_length = strlen($twitter_hashtags);
    if ($message_length + $url_length + $hashtags_length > 140) {
        $shorten_message_to = 140 - $url_length - $hashtags_length;
        $shorten_message_to = $shorten_message_to - 4;
        //$message = $message." ";
        $message = substr($message, 0, $shorten_message_to);
        $message = substr($message, 0, strrpos($message, ' '));
        $message = $message . "...";
    }
    return $message . " " . $url . " " . $twitter_hashtags;
}


この部分を以下のように書き換えます。



function set_tweet_length($message, $url, $twitter_hashtags="") {

    $message_length = mb_strlen($message);
    $url_length = mb_strlen($url);
    $hashtags_length = mb_strlen($twitter_hashtags);
    if ($message_length + $url_length + $hashtags_length > 140) {
        $shorten_message_to = 140 - $url_length - $hashtags_length;
        $shorten_message_to = $shorten_message_to - 4;
        //$message = $message." ";
        $message = mb_substr($message, 0, $shorten_message_to);
        $message = mb_substr($message, 0, mb_strrpos($message, ' '));
        $message = $message . "...";
    }
    return $message . " " . $url . " " . $twitter_hashtags;
}



めんどくさければ、コピペでOK。


ご覧のとおり、strlenなどのバイト数を返す関数を、mb_strlenなどに置換しました。





その結果、こんな感じ。


【過去記事】: WindowsでEvernoteを使うなら、Chromeアプリ版が超絶快適! http://tinyurl.com/3oxodfn
@tomos2006
ともす(がじぇぎみ)



今のところ、特に不具合も起きていません。


「Tweet Old Post」を使う全ての皆さん、これ絶対やった方がいいですよ。



 

Tags: ,

SPONSORED LINK

separator

最後までご覧いただき、ありがとうございます。

もし気に入っていただけましたら、ブックマークお願いします。

引き続き、このブログを読んでいただける方は、RSS登録お願いします。