アイキャッチ画像付でツイッターに投稿出来るプラグインを作った

※記事内に商品プロモーションを含む場合があります

前まで使っていた、NextScripts: Social Networks Auto-Poster。
ツイッターやFacebookページへの記事更新の投稿を
このプラグインで行っていました。

しかし、メモリ喰い過ぎ!
よってこのプラグインの利用をやめました。
【参考】WordPressがメモリを浪費するので使用量を表示するプラグインを作った

このプラグインの便利な所はアイキャッチ画像も
ツイッターに投稿出来る所。

他にアイキャッチ画像付で投稿出来るプラグインは
無かったと思います。

と言うことで、今回は自分で作ってしまいました。

アイキャッチ画像付でツイッターに投稿出来るプラグイン

ツィッターへ投稿するにはOAuthでの認証が必要です。

画像付でツィートするには

  • 画像をツィッターへアップロード
  • アップロードが成功したらメディアIDの抜き出し
  • ツィートパラメータの設定とツィート

の順に処理します。

実際のコード

<?php
/*
Plugin Name: WP2Social by eax
Plugin URI: https://b.eax.jp/
Description: Publish post to Twiter with thumbnail.
Author: eaxjp
Version: 0.1
Author URI: https://b.eax.jp/
*/

require_once(‘twitteroauth.php’);

function wp2_sns() {

//記事名・URL・アイキャッチ画像URLを取得
$wp2s_post_title = get_the_title();
$wp2s_post_url = get_permalink();

$thumbnail_id = get_post_thumbnail_id();
$eye_img = wp_get_attachment_image_src( $thumbnail_id , ‘medium’ );
$wp2s_post_eyec = $eye_img[0];

$tweet = “【ブログ更新】”.$wp2s_post_title.”-“.$wp2s_post_url;
//LOG START
$h3ad_fn = dirname(__FILE__).’/log.txt’;
$h3ad_fp = fopen($h3ad_fn, ‘w’);
fwrite($h3ad_fp, “START LOGGING URL:”.$wp2s_post_url);

//ツイッター 1▼ //////////////////////////////////////////////////////////////////
// Consumer keyの値
$consumer_key = “”;
// Consumer secretの値
$consumer_secret = “”;
// Access Tokenの値
$access_token = “”;
// Access Token Secretの値
$access_token_secret = “”;

$connection = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);

//画像のアップロード
$params = array(
“media_data” => base64_encode(file_get_contents($wp2s_post_eyec)),
//”media” => “” ,
) ;
$req = $connection->OAuthRequest(“https://upload.twitter.com/1.1/media/upload.json”,”POST”,$params);

//メディアIDの抜き出し
$decode = json_decode($req, true); //JSONデコードして
$media_id = $decode[‘media_id_string’]; //「media_id_string」の値を格納

//ツィートパラメータの設定とツィート
if($media_id != “”){
$params = array(
‘status’ => $tweet ,
‘media_ids’ => $media_id
) ;
}else{
$params = array(
‘status’ => $tweet
) ;
}
$req = $connection->OAuthRequest(“https://api.twitter.com/1.1/statuses/update.json”,”POST”,$params);
fwrite($h3ad_fp, “Twitter 1-eaxjp\n”);
fwrite($h3ad_fp, $req);
//ツイッター 1▲ //////////////////////////////////////////////////////////////////

//LOG END
fclose($h3ad_fp);
}

add_action( ‘new_to_publish’, ‘wp2_sns’ );
add_action( ‘pending_to_publish’, ‘wp2_sns’ );
add_action( ‘draft_to_publish’, ‘wp2_sns’ );
add_action( ‘auto-draft_to_publish’, ‘wp2_sns’ );
add_action( ‘future_to_publish’, ‘wp2_sns’ );
add_action( ‘private_to_publish’, ‘wp2_sns’ );

動作

一応Wordpressプラグインとして動作します。

動作には、Twitter OAuth PHPライブラリが必要。
こちらからダウンロード出来ます。

abraham/twitteroauth · GitHub

ライブラリの置き場所によっては
require_once(‘twitteroauth.php’);
の部分の修正が必要です。

次に必要なのはカスタマーキーとアクセストークン。

こちらを参考に取得します。

Twitterアプリケーションの作成
(Consumer key、Consumer secret、Access token、Access token secretの確認方法)

プラグインを有効化します。

エラーがある場合は有効化出来ないので
修正してから有効化を試して下さい。

有効化後、記事を公開するとツイッターにアイキャッチ画像付きで
ツィートされます。

こんな感じに表示されます。

アイキャッチ画像付でツイッターに投稿出来るプラグインで投稿したツィート

 

あとがき

とりあえず、メモリの消費量が全然違うのでメモリの節約には良いです。

NextScripts: Social Networks Auto-Posterではツイッター
2アカウント以上は有料ですが、このプラグインなら2アカウントでもタダです。

ホント、有料版を買わなくて良かったです。

Facebookページへの投稿もこのプラグインで行っていますが
アクセストークンの取得に苦労しました。

普通に取得すると個人アカウントでの投稿になってしまいます。
【参考】無期限 Facebookアクセストークンの取得方法

アクセストークンの取得が本当に面倒です。

あとはGoogle+だけ、9月の連休で作るかもしれません。