PHPでTweetBotを作ってみた(その2)

プログラミング

こんにちは、TweetBot歴2日のぴのです。

前回TweetBotをPHPで動かすところまで成功したので、今回は当初の目的通り「最新記事へのリンクを定期的にツイートする」ようにしていきます。前回の記事をまだ読んでいない方は先にそちらをご覧ください。

最新記事をツイートしたい

最新記事の情報を取得する関数を追加する

WordPressには便利な関数が数多く用意されており、割と簡単に最新の記事を取得する関数を作ることができます。WordPressをインストールしたディレクトリの中にあるwp-includes/functions.phpの末尾(7600行目くらい)に以下の関数を追加しましょう。

function get_last_article($post_type) { 
  $args = array(
    'posts_per_page' => 1, 
    'orderby' => 'date',
    'order' => 'DESC',
    'post_type' => $post_type,
    );
  $my_posts = get_posts( $args );
  wp_reset_postdata();
  return $my_posts[0];
}

何をしているのかというと、日付を降順に並べた記事の中から最新の1件を取得して返しています。これで求めていたデータを取得できます。

TweetBotの文言を変更する

前回作ったTweetBotに手を加えて、最新記事のタイトルとリンクをツイートするようにします。wp-load.phpをロードすることでWordPress内で定義されている関数のほとんどを使うことができます。

<?php
require "./twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
require_once ('./public_html/okinotori/wp-load.php'); /*phpファイルのロード*/
$consumerKey       = "";
$consumerSecret    = "";
$accessToken       = "";
$accessTokenSecret = "";
$twitter = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
$lastarticle = get_last_article('post'); /*記事の取得*/
$tweet = $lastarticle->post_title." ".esc_url(get_permalink($lastarticle->ID)); /*タイトルとリンク*/
$result = $twitter->post("statuses/update", array('status' => $tweet));
if( $twitter->getLastHttpCode() == 200 ){
  echo "tweet success";
} else {
  echo "tweet failed";
}
?>

完成

毎日23時に最新記事のタイトルとリンクが自動投稿されるようになりました!!やったね!!!

おわりに

前回すごく時間がかかってしまい、もしかしたら今回もかなり時間がかかってしまうのでは?と危惧していましたが、30分くらいであっさりとできてしまってちょっと拍子抜けしました。まあ特に苦労なくできてよかったです。

okinotoribotくんが毎日のように最新記事をツイートしてくれるので、更新をサボるとすぐにバレてしまいます。これからもほどよく投稿して、同じ記事が毎日ツイートされることのないよう精進していきたいと思います。

【2020/5/1追記】その3を公開しました。

参考

最新記事の情報を取得する関数の作成は以下のサイトを参考にさせていただきました。

コメント

タイトルとURLをコピーしました