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で連携をする