WordPressのプラグイン「tweetable」は、Twitterの投稿内容をWidgetに表示したり(トップページの右に表示されているやつです)、ブログ記事を作成した際に、記事のタイトルとリンクをTwitterに自動投稿してくれる便利なプラグインです。
しかし自動投稿してくれるツイートの表記が
ブログ記事名+短縮URL 例) プラグイン「tweetable」のブログ記事自動投稿で、表示方法を変更しました bit.ly/aaa
というような感じで、非常にあっさりとしているんです。せめてブログタイトルぐらいは入れたいなと思っていて、WordPressのプラグインについて調べる機会があったので、ついでとばかりにブログタイトルをいれてみました。
tweetableのブログ記事投稿部分は、tweetable.php内の次の関数 tweetable_publish_tweet で処理されています:
/*** Send tweet on post publish ***/ function tweetable_publish_tweet($post_id) { $installed = get_option('tweetable_account_activated'); if (get_option('tweetable_auto_tweet_posts') == '1' && $installed) { 【【中略】】 $permalink = apply_filters('tweetable_autotweet_permalink', $permalink);★ $permalink = $twitter->shorten_url($permalink, $shortener, $shortener_apikey, $shortener_login); $title = $tweet_prefix.' '.$post->post_title; $title = apply_filters('tweetable_autotweet_title', $title);★ $tweet = $twitter->fit_tweet($title, $permalink); $tweet = apply_filters('tweetable_autotweet_tweet', $tweet);★ $update = $twitter->update_status($tweet, $user_key, $user_key_secret); } }
中略せずに残した部分は、記事名やURLをくっつけて、Twitterに投稿する部分です。★をつけた行に、apply_filtersが見えると思いますが、これは第1引数のフィルターフックに紐づくフィルターが存在すれば、それを第2引数へ適用してくれる関数のようです。しかし「tweetable」のreadme.txtを見ると、デフォルトではこの3つのフィルターフックに紐づくフィルタは存在せず、ユーザが自由に定義できることになっています。
そこで今回は、3つ目の★で使えるtweetable_autotweet_tweet に紐づくフィルタを定義し、「tweetable」が生成したツイートに、このブログ名をつけてみたいと思います。
まずは tweetable_autotweet_tweet が実際にどのフィルタと紐づくのかを定義します(定義場所はtweetable.phpの中ならどこでもいいと思うけど、他のフィルタ定義がある最上部が無難):
add_filter('tweetable_autotweet_tweet', 'tweetable_autotweet_tweet_add_blogname');
tweetable_autotweet_tweet_add_blogname は、新しく定義したフィルタ名です。このフィルタ名を関数名にして、ブログ記事をくっつけます。ブログ記事はget_bloginfo('name')で取得できます。WordPressにはbloginfo()関数もあるのですが、変数に保持する場合はget_bloginfo()を用います(これでちょっと詰まった…)。ちなみにbloginfo()は標準出力にそのまま出力してしまう関数のよう。
function tweetable_autotweet_tweet_add_blogname($tweet){ $blogname = get_bloginfo('name'); return '【'.$blogname.'】 '.$tweet; }
これで作業は終了です。この追加作業により、自動投稿されるツイートは次のようになりました:
【ブログ名】 ブログ記事名+短縮URL 例) 【By-Natures::Blog】 プラグイン「tweetable」のブログ記事自動投稿で、表示方法を変更しました bit.ly/aaa
WordPressのプラグインの仕組みも面白いし、何より「tweetable」がここまで綺麗な拡張を用意してくれているのが驚きでした。既存の関数を変更しないで済むのが素晴らしいです。