Twitter Toolsで1日分のつぶやきをまとめて表示

以前、Twitter Toolsを導入したときに、「1日分or1週間分のつぶやきをまとめて投稿する」という機能があることは知っていましたが、実際にはこんな機能は使わないだろうと思っていました。

でも、最近になって「そういや、あの日は何をやってたっけ(=つぶやいてたっけ)」とか、「あの日につぶやいたことで大事なことがあったような気がする」とか、物忘れが酷くなってきたのか確認したくなる場面がちょくちょくと。

実際に、自分のつぶやきだけをまとめて表示しているブログもあるくらいだし、公開してるんだったら自分のブログでその機能をつけても良いではないか、と思い、それをやってみることにしました。

ただし、最近の更新頻度ではトップページがこの「つぶやきのログ」で埋まってしまう可能性もあるのでトップページには表示しない等の条件付きで。

ということで、まずはトップページに特定のカテゴリの記事は表示しないという設定をすることに。

これを実施するためには、index.phpの中身をいじる必要があります。

index.phpの中に

<?php while (have_posts()) : the_post(); ?>

という部分がありますが、ここにquery_posts関数を使うと実現できます。query_posts関数はループタグの条件を設定するもので、引数でcatを与えることにより、表示するカテゴリーIDを選択できるようになります。これは、選択したカテゴリーIDを表示するというものですが、カテゴリIDの前に「-(半角マイナス)」を置くことにより、逆に選択したカテゴリーIDの投稿が「表示されない」という設定ができるわけです。

つまり、つぶやきをまとめて表示する投稿のカテゴリ「ついった」のカテゴリIDが197の場合、

 <?php
 query_posts('cat=-197');
 while (have_posts()) : the_post(); ?>
 

とすれば、カテゴリIDが197の投稿、即ちカテゴリ「ついった」の投稿は「表示されない」ようになります。

とはいえ、しっかりと「ついった」というカテゴリの投稿は作成されているため、サイドバーのカテゴリから「ついった」を選択してカテゴリ表示にすれば記事を見ることができるようになります。

本来であれば、これでいいのですが、いざTwitter Toolsでまとめて投稿してみると、3つの問題が発生します。

①時間表示がぐちゃぐちゃ
②htmlの変更ができない
③たまに多重投稿されてしまう

これらを解決したいと思い、Twitter Tools本体のカスタマイズをしてみました。

①時間表示がぐちゃぐちゃ

Twitter Toolsの時間が、日本時間ではなくGMTになってしまうことによる不具合。Word Press本体の方は時間設定で解決済みであるが、Twitter Toolsの方はWord Pressの設定に依存していないため、Twitter Tools自体を日本時間にしないといけないことになります。

編集を行うには、Twitter Toolsのプラグインフォルダのtwitter-tools.phpをいじります。

twitter-tools.phpをテキストエディタで開き、420行目あたりに次のような行があります。

'post_date' => date('Y-m-d H:i:s', $end),

これを、

'post_date' => date('Y-m-d H:i:s', $end + 9*3600),
 

と変更すれば、表示が日本時間になります。単純に9時間の時差を解決しただけです。

②htmlの変更ができない

デフォルトでは、リストがマークリストとなっており、私としては番号付きリストに変更したかったというのと、せっかくなので投稿した時間を表示させたかったというのがあり、こちらの変更もすることにしました。これも、①と同様にtwitter-tools.phpをいじります。

つぶやき1文を表示する記述があるのが、408行目からのif文の中。

if (count($tweets_to_post) > 0) {
$content = '<ul>'."\n";
 foreach ($tweets_to_post as $tweet) {
 $content .= '    <li>'.aktt_tweet_display($tweet, 'absolute').'</li>'."\n";
 }
 $content .= '</ul>'."\n";

これを、

 if (count($tweets_to_post) > 0) {
 $content = '<ol>'."\n";
 foreach ($tweets_to_post as $tweet) {
 $content .= '<li>' .aktt_tweet_display($tweet, 'absolute').' [ '.date('H:i',strtotime($tweet->tw_created_at) + 9*3600). ' ] </li>'."\n";
 }
 $content .= '</ol>'."\n";
 

のように変更すれば、番号付きリストで投稿時間が表示されます。つまり、409行目と413行目のマークリストのタグから番号付きリストのタグに経こうするのと、411行目の部分に時間を表示するための関数を挿入すれば良いということになります。

③たまに多重投稿されてしまう

これは、問題。いろいろと調べてみたのですが、いまのところ解決策はない模様。なぜこうなってしまうかも含めて不明。こんご改善策が見つかることを期待。もし、この解決策がわかったら教えてください。

ということで、なんとかつぶやきをまとめて投稿できる仕組みを導入できました。思ったより手間取ったので備忘録代わりに残しておきます。せっかく設定したのに、次にプラグインがアップデートされて上書きしてしまったらこれらの設定はすべてなくなって、私自身も解決策を覚えてるとは思わないので。

最近物忘れが・・・。

  1. No Comments

Spam Protection by WP-SpamFree