にしあぷ

札幌在住のエンジニア。コンサドーレ、甘いもの、ドット絵が好き。

Tweet Old Postプラグインの「...」投稿を直す

過去の記事をつぶやく『Tweet Old Post』

WordPressプラグインTweet Old Post』。過去の記事をランダムに選んで、Twitterへ投稿します。(このブログでも使用中。古い記事も読んでもらえると嬉しいです)

タイトルが「...」になってしまう

記事の「タイトル+URL」が140文字を超えると、タイトルが「...」に。日本語(マルチバイト文字)1文字を、2文字と数えているのが原因です。

プラグインを修正する

マルチバイト対応の関数に置き換える

プラグイン編集で「tweet-old-post/top-core.php」を開きます。「function set_tweet_length」で検索して見つけたところが、修正する部分です。

文字を扱う関数を、マルチバイト対応の関数に置き換えます。

  • 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 = 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/top-core.php」は上書きされます。アップデート後の修正を忘れずに。

短縮URLを使う(ずぼら)

短縮URLを使えば、「...」投稿を減らせるかも。記事の「タイトル+URL+ハッシュタグ」が140文字以内ならOKなので、URLを短くすればだいぶ文字数が稼げます。プラグイン編集が面倒ならオススメ。

参考にしたページ