WordPressから自動でtwitterにつぶやく
Gianismには便利な関数がいくつかあり、その一つが gianism_update_twitter_status() です。これはtwitterに投稿をすることができます。
基本的な使い方
Gianismでtwitter連携を有効にしている場合、他のSNSアカウントと異なり、連携に使用したアカウントのコンシューマーシークレットがすでに取得済みです。したがって、このアカウントでつぶやくことが可能です。
話を分かりやすくするために、Gianism.infoを例にあげましょう。このサイトと連携しているtwitterアカウントはwpGianismです。
We release another plugin Chiramise! Try for it!https://t.co/Qth6pWfzLC pic.twitter.com/F4IjXabWpr
— Gianism (@wpGianism) November 6, 2016
つまり、あなたのWordPressはサイトのアイデンティティを代表するようなtwitterアカウントにつぶやかせることができるわけです。
投稿を公開した時につぶやく
さて、簡単な例として、「投稿を公開するとつぶやく」という例を考えて見ましょう。どのように利用するかはともかく、重要なのは「どこにフックをかけるか」です。今回使えそうなのは、投稿のステータスが変化したときに実行されるtransition_post_statusです。次のようなコードで実現できます。
<?php
add_action( 'transition_post_status', function( $new_status, $old_status, $post ){
if ( ( 'publish' == $new_status ) && ( 'publish' != $old_status ) ) {
$txt = '新しい投稿を公開しました > ' . get_the_title( $post ) . ' ' . get_permalink( $post );
gianism_update_twitter_status( $txt );
}
}, 10, 3 );
ただし、「投稿を公開したらシェアする」という機能自体はJetpackにも存在しているので、ある程度のオリジナリティを出さないのであれば、そちらを使った方が楽です。コードを書く必要もありません。
ここではJetpackにもできる「文字を挿入」という シンプルな例を超えた、もう少しジェネリックな例に挑戦して見ましょう。今回は通算10作品目の時には、記念すべき投稿を行なったということで盛大に祝福する関数 celebrate_author($post) を定義しましょう。
<?php
function celebrate_author( $post = null ) {
$post = get_post( $post );
$query = new WP_Query( [
'post_type' => 'post',
'post_status' => 'publish',
'author' => $post->post_author,
'posts_per_page' => 1,
] );
if ( 10 == $query->found_posts ) {
// ちょうど10件だったら
return sprintf(
'おめでとうございます! %1$sさんが記念すべき10件目の投稿をしました %2$s',
get_the_author_meta( 'display_name', $post->post_author ),
get_permalink( $post )
);
} else {
return '';
}
}
この関数を上記の例と組み合わせれば、Jetpackよりは少し良さそうですね。より対話的にすれば、あなたのユーザーから面白いと思ってもらえるかもしれません。
複雑な条件でつぶやくべき理由
簡略化のため、「以前のステータスが公開でなく、新しいステータスが公開だったら」という条件にしていますが、実際はもっと複雑な条件を設定すべきです。
たとえば、誰でも投稿できるサイトを作ったとしましょう。その場合、「投稿のステータスが公開になったときつぶやく」という単純なルールにしてしまうと、めざといユーザーは「公開に変更するとつぶやいてもらえる」ということに気づき、同じ投稿のステータスを何度も変更するかもしれません。
そのようなハックを防ぐ意味でも、実際の運用では複雑な条件にすることをおすすめします。一度でも公開になった場合、その日時を投稿メタに保存しておいて、2回目以降は無視するというのが賢い選択でしょう。
自動的かつ定期的につぶやく
WordPressにはCron機能があります。この機能を利用することで、「定期的につぶやく」ということが可能です。
たとえば、毎時間ごとに動作するCronは次のようになります。Codexにも詳細なドキュメントがありますので、ご覧ください。
<?php
add_action( 'init', function() {
// イベントが登録されていなかったら、登録
if ( ! wp_next_scheduled( 'my_daily_cron' ) ) {
wp_schedule_event( current_time( 'timestamp', true ), 'hourly', 'my_daily_cron' );
}
} );
// 上で登録したイベントにフックをかける
add_action( 'my_daily_cron', function() {
// なにかする
} );
さて、問題は「なにをつぶやくか」です。
同じような内容を毎時間つぶやき続けるtwitterアカウントをあなたはフォローしたいと思いますか? いやですよね。
また、twitterのAPIには「同一の内容を連続でつぶやくとエラーになる」という仕様がありますので、もしあなたが積極的にtwitterアカウントを利用していない場合、定期つぶやきはすべてエラーになります。
それに上述した通り、毎回違う内容をつぶやくのでなければ、自動ツイートサービスが存在しますので、そちらを使った方が楽です。
今回は2つの例を紹介しましょう。
目次
- 基本的な使い方
- 投稿を公開した時につぶやく
- 複雑な条件でつぶやくべき理由
- 自動的かつ定期的につぶやく
- ケース1. twitterでデイリーランキングをつぶやく
- ケース2. 時間をずらしてつぶやく
- つぶやきの効果測定をする
- 複数のSNSで連携をする