【WordPress × Twitter】過去記事を自動投稿する例(プラグイン不要)PHP
今回は、WordPressとTwitterを連携する例となり、WordPressサイト内の過去記事をランダムで、定期的に自動投稿する例となります。
WordPressの過去記事を定期的に自動投稿する例
例では、PHPのTwitterOAuthライブラリでTwitter APIを利用し、WordPressの過去記事をランダムで投稿するスクリプトを作成します。そして、そのPHPスクリプトをレンタルサーバーのcronから実行し自動で投稿させます。
Twitter APIの認証情報を確認
APIを利用するTwitterアカウントで Twitter Developers にログインし、追加したAppの「Keys and tokens」画面で、以下の認証情報を確認します。
また、Twitterへ投稿する場合には、User authentication settingsの編集画面で、App permissionsの設定を「Read and write」にします。
- Consumer Key
- Consumer Secret
- Access Token
- Access Token Secret
TwitterOAuthをインストール
Twitter API を操作できるPHPのTwitterOAuthライブラリをインストールします。
今回の例では、以下のページから「twitteroauth-master.zip」をダウンロードし解凍します。
また、PHPライブラリの依存関係を管理するComposerでインストールする方法など、TwitterOAuthライブラリの利用方法の詳細は、以下のリンク先を参考にしてみてください。
WordPressの過去記事を投稿するPHPスクリプトを作成
PHPファイルを作成し、以下のソースコードを記述します。コード内のxxxxxxxxの箇所には、確認したTwitter APIの認証情報をそれぞれ指定します。
例では、スクリプトを実行すると、WordPressの過去記事をランダムで投稿します。
また、Twitter API v2. を利用する場合には、TwitterOAuthクラスのインスタンスに対してsetApiVersion('2') を呼び出します。
<?php
// WordPress関数を利用するためwp-load.phpを読み込み
require __DIR__ . '/wp-load.php';
// 投稿を取得
$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();
// メインクエリの投稿データに戻す
wp_reset_postdata();
// TwitterOAuthを利用するためautoload.phpを読み込み
require __DIR__ . 'twitteroauth-master/autoload.php';
// TwitterOAuthクラスをインポート
use Abraham\TwitterOAuth\TwitterOAuth;
// Twitter APIを利用するための認証情報。xxxxxxxxの箇所にそれぞれの情報をセット
const TW_CK = 'xxxxxxxx'; // Consumer Keyをセット
const TW_CS = 'xxxxxxxx'; // Consumer Secretをセット
const TW_AT = 'xxxxxxxx'; // Access Tokenをセット
const TW_ATS = 'xxxxxxxx'; // Access Token Secretをセット
// TwitterOAuthクラスのインスタンスを作成
$connect = new TwitterOAuth( TW_CK, TW_CS, TW_AT, TW_ATS );
// Twitter API v2. を利用する場合
// $connect->setApiVersion('2');
// 投稿を投稿
$result = $connect->post(
'statuses/update',
array(
'status' => '<過去記事>' . $title . '\n' . $link
)
);
TwitterOAuthライブラリとPHPファイルをサーバーにアップロード
ダウンロードしたTwitterOAuthライブラリと、作成したPHPスクリプトのファイルを、WordPressがインストールしてあるサーバーにアップロードします。
今回の例では、サーバー内のWordPressのルートディレクトリ(wp-configなどがあるディレクトリ)に、「twitteroauth-master」フォルダと、PHPファイルをアップロードします。
PHPファイルをcronに設定
最後に上記で作成したPHPスクリプトのファイルを、サーバーのcron(クーロン)に設定します。それにより、作成したPHPスクリプトを定期的に実行できます。
cronの設定については以下のリンク先を参考にしてみてください。
PHPコードの説明
以下、例のソースコードの簡単な説明となります。
WordPressから投稿データを取得
コード2行目からの以下の箇所では、WordPressから投稿データを取得しています。
// WordPress関数を利用するためwp-load.phpを読み込み
require __DIR__ . '/wp-load.php';
// 投稿を取得
$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();
// メインクエリの投稿データに戻す
wp_reset_postdata();
上記コードでは、まず、WordPressの関数を、WordPress外部のPHPファイルで利用するためwp-load.phpを読み込みこんでいます。
wp-load.phpの詳細については、以下のリンク先を参考にしてみてください。
そして、WordPressの投稿データをget_posts()で取得しています。
get_posts()については、以下のリンク先を参考にしてみてください。
ライブラリを読み込みインスタンスを作成
コード26行目からの以下の箇所では、TwitterOAuthのライブラリを読み込み、APIリクエストで利用するTwitterOAuthクラスのインスタンスを作成しています。
// TwitterOAuthを利用するためautoload.phpを読み込み
require __DIR__ . 'twitteroauth-master/autoload.php';
// TwitterOAuthクラスをインポート
use Abraham\TwitterOAuth\TwitterOAuth;
// Twitter APIを利用するための認証情報。xxxxxxxxの箇所にそれぞれの情報をセット
const TW_CK = 'xxxxxxxx'; // Consumer Keyをセット
const TW_CS = 'xxxxxxxx'; // Consumer Secretをセット
const TW_AT = 'xxxxxxxx'; // Access Tokenをセット
const TW_ATS = 'xxxxxxxx'; // Access Token Secretをセット
// TwitterOAuthクラスのインスタンスを作成
$connect = new TwitterOAuth( TW_CK, TW_CS, TW_AT, TW_ATS );
// Twitter API v2. を利用する場合
// $connect->setApiVersion('2');
投稿を投稿
コード43行目からの以下の箇所では、上記のインスタンスを利用してAPIリクエストを行い、指定したテキストの投稿を投稿しています。
// 投稿を投稿
$result = $connect->post(
'statuses/update',
array(
'status' => '<過去記事>' . $title . '\n' . $link
)
);