過去記事をランダムでツイートする処理をプラグインなしで実装する

先日Twitter APIへのHTTP接続が廃止された影響でTweet Old Postが動作しなくなった場合の対処法という記事でTweet Old Postのカスタマイズ方法を紹介しました。

「過去記事をランダムに抽出してツイートする」というシンプルな処理なだけに、管理者としては「本文やタイトルじゃなくてカスタムフィールドを含めたい」とか、「この投稿タイプの中でこのタクソノミーを持つ投稿だけをツイートしたい」とか、色々と要望が出てくる処理ではないかと思います。

そこで過去記事をランダムにツイートする処理をTweet Old Postのようなプラグインを使わず、自前で実装する方法を考えましたので紹介します。

AD

tmhOAuthのダウンロード

Twitterへの認証部分はライブラリに任せます。
TwitterOAuthが定番ですが、今回はアイキャッチを添付画像にするような処理もやってみたかったのでtmhOAuthというライブラリを使います。
ダウンロードしてテーマと同じディレクトリに置いてください。

functions.phpへの追記

以下のコードをfunctions.phpへ追加します。
カスタマーキーやアクセストークンなどはTwitterの開発者向けページより取得しておきます。

コード自体はとても短いので、ツイートする記事の取得条件の設定や本文のカスタマイズなども分かりやすいのではないかと思います。
Tweet Old Postは私自身よく使っていてとても気に入っているプラグインですが、プラグインに頼らないで過去ログをツイートするという方法も選択肢の一つとして検討してみてもいいのではないでしょうか。

AD

Share

Commentsコメント

メールアドレスは公開されません。コメントは必ずご入力ください。

HTMLタグは使用できません。ソースコードを書き込みたい場合はCodetterGistCodePenなどのご利用が便利です。

ななし さんより
過去ログがツイートされないのですが・・・公開時はちゃんと画像付きでツイートされます。分かりますか?
管理人 さんより
ななし 様
コメントありがとうございます。

WP-Cronがちゃんと動いていないか記述のミスなどがあるのかもしれません。

試しに以下のコードを追加して「http://運用中のURL?tweet=1」とアクセスしてみて、ツイートされるかどうか見ていただけませんでしょうか。

http://bit.ly/1n7BxD8

また、その際エラーログが出るようにして(「ini_set('display_errors', 0);」を追記)、どんなエラーが出ているかお伝えいただけますと詳細を調べることができます。
ななし さんより
管理者様

ありがとうございます。やっと確認できました。

結果から言いますとCronがちゃんと動いていませんでした(^^;
WPのプラグインを全て停止したら動きましたので、何かのプラグインが原因だったみたいです。
初歩的なミスで失礼しましたm(_"_)m

それとこんどは別の問題が出てきました。
画像が添付されません、教えて頂きました「http://bit.ly/1n7BxD8」で
「http://運用中のURL?tweet=1」を試しても画像の添付が出来ません。
何度か試すと、添付できる場合もありますが、9割方添付できません。

もう少し調べてみます。
管理人 さんより
ななし 様
必ず添付できないのではなく、添付出来る場合もある、というのが厄介ですね。。。
添付が成功する画像と失敗する画像に何か違いはありませんか?

私が以前経験した事例ですが、スクリプトなどを使って自動で記事を投稿した場合、画像ファイルの形式(JPEGやGIFなど)が正常に判別できず、その正常に判別できてない画像はいろいろとおかしな動作を起こすことがありました。

メディアライブラリの一覧表示で、以下のように拡張子が表示されていなければその添付画像はちょっとおかしいということになります。
http://imgur.com/i4k80z1
tenten23 さんより
初めまして。
こちらの記事を参考にして、過去記事を画像付きで投稿出来るようになりました。ありがとうございます! ツイートに使う画像ですが、アイキャッチ画像ではなくカスタムフィールドで挿入した画像をツイートに添付する場合、36行目のコードをどう変えれば良いでしょうか。もし良ければ教えて頂けないでしょうか。(advanced custom feildを使っております。)

宜しくお願い致します。
管理人 さんより
tenten23 様

コメントありがとうございます。

$fileに画像のURLが入ればよいので、

                $file = wp_get_attachment_image_src( get_post_thumbnail_id($post[0]->ID), 'full' );
                $file = $file[0];

の2行をAdvanced Custom Fieldsの場合でしたら(画像のフィールド名がimageNameだった場合)

$file = wp_get_attachment_image_src(get_field('imageName'), 'full');

とすればどうでしょうか。