【WordPress × Twitter】過去記事を自動ツイートする例(プラグイン不要)PHP

今回は、WordPressとTwitterを連携する例となり、WordPressサイト内の過去記事をランダムで、定期的に自動ツイートする方法となります。

WordPressの過去記事を定期的に自動ツイートする例

以下、WordPressの過去記事をランダムで、定期的に自動ツイートする方法の手順となります。

TwitterOAuthをダウンロード

今回の例では、自動ツイートを行うために、PHP から TwitterのREST API を操作できるTwitterOAuthライブラリを利用します。

TwitterOAuthライブラリを利用するには、まず、以下のリンク先から「twitteroauth-master.zip」をダウンロードします。

TwitterOAuth PHP Library for the Twitter REST API

そして、ダウンロードしたzipファイルを解凍し、「twitteroauth-master」フォルダとします。

また、今回はライブラリを直接ダウンロードしましたが、ライブラリの管理にはComposerがおすすめです。詳しくは以下のリンク先を参考にしてみてくさい。

【PHP】Composerは絶対必要!インストール方法と解説で完全攻略 | 侍エンジニア塾ブログ

WordPressの過去記事をツイートするPHPスクリプトを作成

次に、TwitterOAuthを利用し、WordPressの過去記事をランダムでツイートするPHPスクリプトのファイルを作成します。

以下が例のPHPスクリプトとなり、任意のPHPファイル名をつけて保存します。

<?php
// マルチサイトを利用している場合にドメインをセット
$_SERVER['HTTP_HOST'] = 'example.com';
// WordPress関数を利用するためwp-load.phpを読み込み
require __DIR__ . '/wp-load.php';

// TwitterOAuthライブラリの読み込み
require 'twitteroauth-master/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;

// 投稿を取得
$args = array(
    // 1件の投稿  
	'posts_per_page' => 1,
    // ランダム順
    'orderby' => 'rand'
);
$cron_query = get_posts( $args );

// 先頭の投稿データをセット
$post = $cron_query[0];
setup_postdata( $post );

// ツイートで利用する投稿データを取得
$link = get_permalink();
$title = get_the_title();

// Twitter APIを利用するための認証情報。xxxxxxxxの箇所にそれぞれの情報をセット
$consumer_key = 'xxxxxxxx';
$consumer_secret = 'xxxxxxxx';
$access_token = 'xxxxxxxx';
$access_token_secret = 'xxxxxxxx';

// TwitterOAuthのインスタンスを作成
$connect = new TwitterOAuth( $consumer_key, $consumer_secret, $access_token, $access_token_secret );

// 投稿するツイートをセット
$result = $connect->post(
    'statuses/update',
    array(
        'status' => '<過去記事>' . $title . '\n' . $link
    )
);

// メインクエリの投稿データに戻す
wp_reset_postdata();

上記ソースコード内でxxxxxxxxとなっている箇所は、上から順番にTwitter APIの以下の認証情報となります。

  • Consumer Key 
  • Consumer Secret
  • Access Token
  • Access Token Secret

実際に利用する際には、自身のTwitter APIの認証情報をそれぞれ指定します。

PHPファイルとTwitterOAuthライブラリをサーバーにアップロード

ダウンロードした「twitteroauth-master」フォルダと、作成したPHPファイルを、WordPressがインストールしてあるサーバーにアップロードします。

今回の例では、サーバー内のWordPressのルートディレクトリ(wp-configなどがあるディレクトリ)に、「twitteroauth-master」フォルダと、作成したPHPファイルをアップロードします。

PHPファイルをcronに設定

最後に上記で作成したPHPスクリプトのファイルを、サーバーのcron(クーロン)に設定します。それにより、作成したPHPスクリプトを定期的に実行できます。

cronの設定については以下のリンク先を参考にしてみてください。

作成したPHPスクリプトの説明

以下、作成したWordPressの過去記事をランダムでツイートするPHPスクリプトのポイントなる箇所の説明となります。

WordPress関数の利用する設定

まず、WordPressで利用できる関数を、WordPress外部のPHPファイルで利用するためwp-load.phpを読み込みます。

また、マルチサイトを利用している場合には、$_SERVER['HTTP_HOST']に、ツイートしたい記事があるサイトのドメイン名をセットします。

例のソースコードでは以下の箇所となります。

ソースコード2行目

// マルチサイトを利用している場合にドメインをセット
$_SERVER['HTTP_HOST'] = 'example.com';
// WordPress関数を利用するためwp-load.phpを読み込み
require __DIR__ . '/wp-load.php';

TwitterOAuthライブラリの読み込み

次に、TwitterOAuthライブラリの読み込みと利用する準備を行います。例のソースコードでは以下の箇所となります。

ソースコード7行目

// TwitterOAuthライブラリの読み込み
require 'twitteroauth-master/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;

ツイートする記事の情報を取得|get_posts()

次に、ツイートする記事の情報をget_posts()で取得します。取得する条件はランダムで1件を表示するとしています。例のソースコードでは以下の箇所となります。

ソースコード11行目

// 投稿を取得
$args = array(
    // 1件の投稿  
	'posts_per_page' => 1,
    // ランダム順
    'orderby' => 'rand'
);
$cron_query = get_posts( $args );

// 先頭の投稿データをセット
$post = $cron_query[0];
setup_postdata( $post );

// ツイートで利用する投稿データを取得
$link = get_permalink();
$title = get_the_title();

get_posts()については、以下のリンク先を参考にしてみてください。

TwitterOAuthを利用しツイートする内容を作成

最後にTwitterOAuthを利用しツイートする内容をセットします。

Twitter APIの認証情報を引数に指定しTwitterOAuthインスタンスを作成します。そして、TwitterOAuthのpostメソッドのパラメータにツイートする内容をセットします。

例のソースコードでは以下の箇所となります。

ソースコード28行目

// Twitter APIを利用するための認証情報。xxxxxxxxの箇所にそれぞれの情報をセット
$consumer_key = 'xxxxxxxx';
$consumer_secret = 'xxxxxxxx';
$access_token = 'xxxxxxxx';
$access_token_secret = 'xxxxxxxx';

// TwitterOAuthのインスタンスを作成
$connect = new TwitterOAuth( $consumer_key, $consumer_secret, $access_token, $access_token_secret );

// 投稿するツイートをセット
$result = $connect->post(
    'statuses/update',
    array(
         'status' => '<過去記事>' . $title . '\n' . $link
    )
);

以上が作成したPHPスクリプトのポイントなる箇所の説明となります。

参考サイト、参考書籍

コメントまたはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。Twitterで返信する場合はコチラから。