【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」をダウンロードし解凍します。

GitHub - abraham/twitteroauth

また、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
    )
);

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。