ブログを書く暇がないときは Tweet Old Post で手抜きしよう
ブログの更新ができない…
年末に子供が産まれたため、ブログの更新が滞ってしまい気になっている毎日。育児休暇を取得していつもよりたくさん書くぞ〜と意気込んでいたくらいなのにぜんぜん「休暇」じゃないです。子育てがここまで大変だとは。
今年から餃子マナーも SNS を活用しようと、twitter や Facebook ページ を開設したのに何も記事がない…という状況をとりあえず脱却するために Tweet Old Post という WordPress プラグインを使用することにしました。本質的解決にはならないですが…。
Tweet Old Post について
このプラグインは WordPress の過去の記事をランダムにツイートしてくれるプラグインです。ブログの記事がそこそこたまっていれば twitter 経由でアクセスが増えるんじゃない?という目論見です。(実際はそんなに甘くない…)
単に過去記事をツイートするだけではなく、ツイート方法を細かく設定できるようになっています。
- ツイートする時間間隔
- どこまで昔の記事を使うかの指定
- ツイートする(しない)カテゴリの指定
- 個別記事のツイート除外指定
- ハッシュタグの付与
- ブログ記事への 短縮 URL 貼り付け
などを指定できます。
インストールと設定
WordPress のプラグイン検索から「tweet old post」を検索してインストールします。
無事にインストールが終わるとサイドバーメニューに「Tweet Old Post」項目が現れます。
順に設定していきましょう。まずは、自分の twitter アカウントと紐付けます。設定画面の一番上の方にある「Sign in with Twitter」をクリックして Twitter にログイン、承認を行えば OK です。
その下にはいろいろな設定項目が続きますがそれほど悩むところはないかと思います。すべて英語なので尻込みしてしまうかもしれませんが、普段 twitter をやっている人であれば意味は理解できるんじゃないでしょうか。ちなみに僕の設定はこちらです。
さらに続きます。ツイートする時間間隔やツイート対象の設定をします。
一番下の「Exclude Specific Posts」をクリックすると個別の記事を対象にするか除外するかを選択する画面になります。チェックマークをつけて「Exclude Selected」ボタンを押すとその記事がツイート対象から除外されます。
すべての設定が終わったら忘れずに「Update Tweet Old Post Options」をクリックして設定を保存します。
「Tweet Now」を押して手動でツイートテストをしてみた結果がこちら。
ありゃ、、、記事のタイトルが途中で切れてる。本当は下のようになって欲しい。
どうやらこれは、日本語にきちんと対応していないからのようです。
ちょっとソースをいじらないとならないですが、それほど難しくないので対処法を書きます。
日本語対応
ソースコードを見るとどうやら文字数を140文字で切るためにカウントを行っている部分が日本語に対応しておらず140文字ではなく140バイトで切ってしまっているようです。プラグインリストの「編集」から top-core.php の set_tweet_length() 関数をマルチバイトに対応した関数に置き換えてあげましょう。
この部分のもとのソースはこちら。Ver 4.0.9 では 403行目から set_tweet_length() 関数が始まっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//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; } |
この中で使われている次の3種類の文字列系関数 をマルチバイト対応のものに書き換えます。
- strlen → mb_strlen
- substr → mb_substr
- strrpos → mb_strrpos
置き換えた結果は次の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//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; } |
保存してテストツイートをしてみると今度はうまくいきました!
ばんじゃい!