ブログの過去記事を読んでもらうために、自動で定期的に過去記事をツイートするプラグイン「Tweet Old Post」を導入します。
他にも同じようなプラグインがないかと探してみたのですが、「Tweet Old Post」が唯一無二のようです。
そのままでは日本語に対応しておらず、PHPコードの編集を行う必要があります。
インストール及び日本語対応
ダッシュボードからTweet Old Postを検索して、インストール及び有効化します。現時点の最新バージョンは3.3.2でした。しかし、そのままでは日本語の文字数を上手にカウントできないので、日本語対応を行います。
修正ファイルは
wp-content/plugins/tweet-old-post/top-core.php
です。
バージョン3.3.2では366行~396行目にある
function set_tweet_length
の中身を修正します。より最新バージョンの場合、場所が違うかもしれません。行数ではなくset_tweet_lengthの位置を探してください。
そのset_tweet_lengthの中にある2つの命令を日本語対応した命令に変更します。
- strlen を mb_strlen に変更
- substr を mb_substr に変更
それぞれ複数個あるので、検索などを使い全ての箇所を変更しましょう。
下がソースコードになります。
変更前
//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;
}
変更後
//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, 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, strrpos($message, ' '));
}
$message = $message . "...";
}
return $message . " " . $url . " " . $tags;
}
日本語対応が終わったら次は設定を行います。ダッシュボードに「Tweet Old Post」の項目が出現しています。
Twitterの認証に失敗する
まずはAccount Loginを設定します。ここでTwitterアカウントとの紐付けを行います。私の場合、イキナリ「Sign in with Twitter」ボタンをクリックして認証を進めてみたところ、リダイレクトエラーで失敗してしまいました。
ブラウザを変えても解決できなかったのですが、よく見るとNoteに答えが乗っていました。
Account Login の次の項目 Tweet Old Post Admin URL (Current URL) にURLが入力されているでしょうか?もし既に入力されていたら、そのままページ最後の「Update Tweet Old Post Options」をクリックして、オプションの内容を一度セーブすると認証に成功しました。
もし仮にURLが入力されていなかったら、今見ているTweet Old Postの管理画面のURLをブラウザのアドレス欄からコピペすればOKです。
デフォルトではInclude LinkがNoになっています。リンクが含まれないツイートに意味はないので、Yesに変更します。
他に、
- Minimum age of post to be eligible for tweet 30 → 5
- Maximum age of post to be eligible for tweet 60 → 90
にしてツイートされる記事の幅を広げました。
以上で設定は終了です。「Tweet Now」ボタンをクリックして確認してみましょう。
オプション項目の日本語説明
Account Login Twitter | Twitterアカウントの認証をします |
---|---|
Tweet Old Post Admin URL (Current URL) | 現在開いている管理画面のアドレスを入力します |
Tweet Content | ツイートする内容をタイトルと本文の組み合わせから選べます |
Additional Text | 追加する文字列を入力します(例:過去記事です→) |
Additional Text At | 上のAdditional Textを文頭か文末のどちらに追加するか |
Include Link | ツイート内容に記事のURLを追加するか否か |
Fetch URL from custom field | カスタムフィールドからURLを設定するかどうか (専用のカスタムフィールドを作成することで自由にURLを指定できます) |
Use URL shortner? | 短縮URLサービスを利用するか否か |
Hashtags | ハッシュタグを利用するか否か |
Minimum interval between tweets | ツイートする最短間隔(単位は時間) |
Random Interval (added to minimum interval) | 最短間隔にプラスするランダム時間(単位は時間) |
Minimum age of post to be eligible for tweet | 何日前の記事までつぶやくか |
Maximum age of post to be eligible for tweet | 何日前の記事からつぶやくか |
Enable Log | ログを残すか否か |
Categories to Omit from tweets | ツイートしないカテゴリーを指定 |