NewsPicksとWordPressを連携して個人キュレーション作ってみた

カテゴリ: IT
タグ: , ,
虫食いモード

虫食い部分をクリックorタップで答えが表示されます

ニュースアプリ、NewsPicks。愛用してます。
Wordpressのテーマ作りながら運用してるこのサイトにNewsPicksを連携させて個人キュレーション機能をつくってみることにしました。このサイトのNewsってメニューのやつです。完成したのがこちらです。

手順としては
1. NewsPicksをTwitterと連携。
2. TwitterとWordpressをZaiperで連携。
3. ZaiperによってWordpressに自動投稿。
4. WordPressのアクショントリガーを使って自動投稿のタイミングでタイトルとかトップ画像とか設定。

って感じです。(Zaiperってのはサービスとサービスを連携させるサービスです。IFTTTみたいなやつ。)

以下詳しく説明してきます。手順4がみそです。

1. NewsPicksをTwitterと連携

NewsPicksのTwitterボタンを押すだけです。

2. TwitterとWordpressをZaiperで連携

ZaiperはIFTTTよりも高機能なハブサービスです。IFTTTにもwordpress連携機能はあるんですが、カスタム投稿指定ができませんでした。
一方Zaiperはカスタム投稿タイプを指定して投稿できるなどいろいろ設定できます。

こちらからどうぞ。Zaiper IFTTT

「Twitterに投稿されたらwordpressに投稿」って設定するだけです。キュレーションに関係ないのが入らないように専用のTwitterをアカウントを作るか、Zaiper側でフィルタリングかけてもいいかもしれません。

3. ZaiperによってWordpressに自動投稿

これはZaiperが勝手にやってくれます。

4. アクショントリガーを使って自動投稿のタイミングでタイトルとかトップ画像とか設定

ここからが本番です。wordpressにはアクショントリガーといって、あるアクションに対して関数を呼び出すことができる機能が用意されています。
今回は「記事の投稿」に対して関数を呼び出し

1. ツイートから記事のURLを取り出す
2. そのURLから記事のタイトルを取得して、wordpressの投稿のタイトルに設定
3. URLを「<a href=”hogehoge”>記事を読む</a>」の形に置き換える
4. アイキャッチ画像の設定

を自動でやってくれるようにします。
今回使うアクショントリガーは「publish_***」です。***というカスタム投稿タイプが投稿、編集された時に任意の関数を呼び出します。

NewsPicksがTwitter連携機能でツイートした内容は

助かります。 / フリー素材を配布しているサイトを一覧でまとめたサイト「AllTheFreeStock」
http://npx.me/suj4/zkXr #NewsPicks

です。
自分のコメント / 記事のタイトル リンク #NewsPicks
という形式みたいです。これをfunction.phpファイルのphpとsql文でwordpressに適した形にしていきます。

1. ツイートから記事のURLを取り出す
手順2,3,4にはツイート内容から取得したURLが必要です。

正規表現でURLを抜き出しています。$contentはツイート内容の文字列を受け取っています。渡す側に関しては後述します。

2. URLから記事のタイトルを取得して、wordpressの投稿のタイトルに設定

手順1で取得したURLにアクセスしてタイトルを取ってきます。

3. URLを「<a href=”hogehoge”>記事を読む</a>」の形に置き換える

手順1で取得したURLをクリッカブルなボタンに変更します。

4. アイキャッチ画像の設定

手順1で取得したURLにアクセスしてアイキャッチ画像のSRCを取ってきます。

5. 上記の関数を呼び出す関数を作る
最後に、1から4の関数を呼び出す関数を作り、それをアクショントリガーで呼び出します(ややこしい)

最後の行のアクショントリガーによってZaiperがツイート内容をそのままワードプレスの投稿として公開した瞬間に関数modifyPostが呼び出されます。*私はカスタム投稿タイプ「news」としています。
4行目まででZaiperが投稿した内容をデータベースから取得し変数に格納します。
5行目でURLを取得(手順1)。
6行目でタイトルを取得(手順2)。
7行目ではタイトルに必ずついてくる「NewsPicks – 」という文字列を削除しています。
8行目でURLにaタグを付与(手順3)
9行目で画像を取得(手順4)
12〜14行でデータベースを上書きしています。
17,18行で置き換えた内容を取得しなおして余計な内容を削除しています。

なお、この関数は自分で投稿タイプnewsを更新したりしても呼び出されます。その際に余計な処理をしないように実際はif文などを書き加えているため、もう少し長くなりました。
また modifyPost に出てくる post_thumbnail という項目はデータベースにはないので wp_posts テーブルに自分で作ってください。

以上です。

投稿タイプ毎の表示数設定も必要な方はこちら

投稿日 : 2014年12月7日

Related Posts関連記事