ワードプレス(WP)で過去記事を自動ツイートしてアクセス向上委員会

寝転んでるツイッターバードブログの過去記事を読んでもらうために、自動で定期的に過去記事をツイートするプラグイン「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 ツイートしないカテゴリーを指定