WP Favorite Posts」は、サイト独自のお気に入り機能を実装できるプラグインで、ECや不動産などの会員を絡めるようなサイトをWordPress使って作る際に便利なプラグインのひとつだと思います。
以前から気になっていたので少し触ってみたら良い感じだったので、その時の備忘録も兼ねて使い方など簡単に紹介します。

きっかけはかちびと.netさんの「「この記事をお気に入りに追加」を実装できるWordPressプラグイン・WP Favorite Posts」というエントリーで知ったんですが、このエントリーでも紹介されているようにECサイトであれば「気になる商品一覧」とか不動産サイトであれば「気になる物件一覧」みたいな会員サイトとかでよく見かけるお気に入り登録機能のようなものを簡単に実装できます。

お気に入り登録したい際のデータは、ログインユーザーに関してはデータベースに保存、そうでない場合もCookieを利用するというタイプなので、会員を持たないようなサイトでも使うことは可能です。
ただ、Cookieを使用する場合、例えば「この記事は○人の方にお気に入り登録されています」というようなものを表示させたい時は正確な数が出せなかったりもするので、そういったコンテンツを正確な数値で管理・表示したい場合などはログインユーザーを用いたほうが良いと思います。

インストール

  1. 管理画面のプラグインから「WP Favorite Posts」を検索してインストール、もしくは「WP Favorite Posts」からダウンロードしてFTPなどを使用してアップロード。
  2. 有効化するとメニュー「設定」の箇所に「Favorite Posts」という項目が追加され、そこで各種設定が行えます。
    また、詳しくは後述しますが、設定画面で表示させたい箇所にチェックを入れる又はショートコードやテンプレートタグで表示させたい箇所に記述することで実装ができます。

各種設定

表示される位置やテキストなど、プラグインの各種設定は「設定 > Favorite Posts」で行います。
設定は大きく3つに分かれており、それぞれ下記のようになっています。

Options

「WP Favorite Posts」の「Options」項目のイメージ

「Options」では、配置場所や画像の有無といった設定を行います。
それぞれの項目は以下を設定するものです。

Only registered users can favorite

チェックを入れると、登録されたユーザーのみ使用できるようにします。

Auto show favorite link

お気に入りに追加するためのアイコンやテキストをどこに表示させるかを選択します。
設定方法には3タイプあり、それぞれ以下のようになっています。

  • Custom
    任意で設置したい場合に選択し、テンプレートで表示させたい箇所にを記述します。
  • After Post
    記事下に表示されます。
  • Before Post
    記事前に表示されます。
Before Link Image

表示させるアイコンの有無や種類を選択します。
予め3種類の画像が用意されていますが、好きな画像を使いたいという場合は「Custom Image URL」に画像へのパスを記述すれば好きなものに変更でき、「No Image」を選択すれば画像は使用せずにテキストのみにできます。

Favorite post per page

お気に入りの一覧表示で、1ページに表示される件数を指定します。

Most favorited posts statics

「Enabled」にするとそれぞれの投稿記事でカスタムフィールドを使ってお気に入りされた数がカウントされるようになり、ウィジェットを使用している場合は「Most Favorited Posts」というウィジェットを使うことで簡単に沢山お気に入り登録されている記事の一覧を出すことができます。
ちなみにカウント数を表示させたりしたい場合は、<?php echo get_post_meta($post->ID, 'wpfp_favorites', true); ?>のような感じで記述してあげれば表示されます。

Label Settings

「WP Favorite Posts」の「Label Settings」項目のイメージ

「Label Settings」では、各箇所で表示される文字列の設定を行います。
それぞれの項目は以下を設定するものです。

Text for add link

お気に入り追加前に表示される文字列を指定します。

Text for added

お気に入り追加後に表示される文字列を指定します。
「Show remove link」にチェックを入れた場合はこの文字列は表示されずに、お気に入り登録後に「Text for remove link」の文字列が表示されます。

Text for remove link

お気に入り登録されている時に、解除する部分に表示される文字列を指定します。

Text for removed

お気に入り解除された時に表示される文字列を指定します。
「Show add link」にチェックを入れた場合はこの文字列は表示されずに、お気に入り解除後に「Text for add link」の文字列が表示されます。

Text for clear link

お気に入りの一覧表示で、全て解除する部分に表示される文字列を指定します。

Text for cleared

お気に入りの一覧表示で、全てお気に入り解除された後に表示される文字列を指定します。

Text for favorites are empty

お気に入りの一覧表示で、お気に入り登録がない場合に表示される文字列を指定します。(手を加える必要有?)

Text for [[remove]] link

お気に入りの一覧表示で、個別にお気に入り解除させる部分に表示される文字列を指定します。

Text for favorites saved to cookies

このプラグインはブラウザのCookieを使用する場合があるので、Cookieが有効化されていない時に表示される説明や補足みたいなものを指定します。

Text for "only registered users can favorite" error message

お気に入り機能を登録ユーザー限定にしている場合に表示させるエラーメッセージの文字列を指定します。

Advanced Settings

「WP Favorite Posts」の「 Advanced Settings」項目のイメージ

「Advanced Settings」では、プラグインに同梱されているCSSとJavaScriptを使用するかどうかの設定になります。
基本チェックを入れずにそのまま使用するので良いと思いますが、何かしらの理由で無効にしたい場合はそれぞれチェックボックスにチェックを入れれば無効化されます。

使い方

登録テキストを表示する

「WP Favorite Posts」使用時のイメージ

設定部分でも書いたのですが、記事の上下いずれかに表示したいだけであれば「Auto show favorite link」の項目を使用して簡単に設置することができます。
そうではなく、任意で配置をしたいという場合は「Auto show favorite link」で「Custom」を選択し、表示させたい箇所に下記を記述します。

<?php wpfp_link() ?>

また、ショートコードを使用して表示させることもでき、ショートコードを使用したい場合は下記のように記述します。

[wpfp-link]

ウィジェットで一覧を表示する

「WP Favorite Posts」ウィジェット設定時のイメージ

テーマでウィジェットを有効にしている場合は、登録されたお気に入り一覧をウィジェットで表示させることもできます。
ウィジェットは、閲覧ユーザーだけのお気に入り一覧を表示するUser's Favoritesと、ユーザー全体でお気に入り登録が多数されているものを一覧表示するMost Favorited Postsの2種類で、 使い方はどちらも表示するタイトルと投稿数をそれぞれ設定して保存するだけで使用できます。

ちなみに、ウィジェットの見栄えやコード、1件もお気に入りが登録されていない時に表示される文字列など変更したい場合は、プラグイン内にあるwpfp-your-favs-widget.phpで変更することができます。
プラグインのファイルを直接いじるのは良くないですしアップデート時に気を付けないといけないですが、手っ取り早く反映したいときはこちらで確実に変更できます。

登録一覧を表示する

お気に入り登録されたものを一覧表示させたい時は、表示させたい箇所に下記を記述します。
一覧表示には予めページネーションも用意されており、デフォルトでは20件以上の登録がある場合は21件目から2ページ目に表示されるようになります。
表示件数は「Options > Favorite post per page」で設定ができます。

<?php wpfp_list_favorite_posts(); ?>

また、ショートコードを使用して表示させることもでき、ショートコードを使用したい場合は下記のように記述します。

[wp-favorite-posts]

カスタマイズ

このままでも十分便利なプラグインではあるのですが、もっとこうだったら...っていうのもあったので、それの実装方法を備忘録兼ねて紹介します。

一覧にアイキャッチを表示させる

お気に入りの一覧表示はデフォルトでul, liを使用して記事タイトルやお気に入り登録数を表示させており、それらの出力はプラグイン内にあるwpfp-page-template.phpが使用されています。
なので、思い切り見栄えを変えたいとか他の情報も出力させるといったことを手っ取り早く実装したい場合は、このファイルを変更することでお気に入りの一覧表示をカスタマイズできます。
もちろん、プラグイン内のファイルは触らずにフックを用いたり置換などの処理を加えて変更できればその方が良いです。

例えばよくありそうなものだと、各エントリーのアイキャッチ画像も出力したい場合は下記のように変更をします。
まず、wpfp-page-template.phpの22行目辺りにある下記の記述を探します。

wpfp-page-template.php
echo "<li><a href='".get_permalink()."' title='". get_the_title() ."'>" . get_the_title() . "</a> ";

単純にここへget_the_post_thumbnail()を追記してアイキャッチを表示させるようにします。

wpfp-page-template.php
echo "<li>" . get_the_post_thumbnail() . "<a href='".get_permalink()."' title='". get_the_title() ."'>" . get_the_title() . "</a> ";

上記コードではリンクからは外して文字列の前に出すようになっているので、別の箇所に出したいとかリンク内に含めたい場合はget_the_post_thumbnail()の記述箇所を変更してください。
今回はアイキャッチですが、記事の投稿日を出したいとか抜粋も出したいなども同じ感じでいけると思います。

カスタム投稿タイプでも使用可能にする

デフォルトの投稿だけであれば問題なく使用できるのですが、実はこのプラグインは一覧表示部分などがカスタム投稿タイプには対応していません。
プラグインのフォーラムにも何人かの方がそれについて質問をしているので、対応方法を作者が回答したり、アップデートで対応してくれる可能性はあるかなと思っていたんですが、プラグイン作者が「WordPress › Support » Does this plugin work on custom post types?」で「カスタム投稿タイプのための公式サポートはありません。」と言っているので、すぐに対応する可能性は低そうな感じです...。
ただ、上記では対応方法を載せている別フォーラムを紹介しており、そこで紹介されている内容でカスタム投稿に対応できます。

カスタム投稿に対応させるためには、先ほどのアイキャッチを追加したときと同様にwpfp-page-template.phpの内容を一部変更します。 まず、wpfp-page-template.phpの20行目辺りにある下記の記述を探します。

wpfp-page-template.php
query_posts(array('post__in' => $favorite_post_ids, 'posts_per_page'=> $post_per_page, 'orderby' => 'post__in', 'paged' => $page));
while ( have_posts() ) : the_post();
  echo "<li><a href='".get_permalink()."' title='". get_the_title() ."'>" . get_the_title() . "</a> ";
  wpfp_remove_favorite_link(get_the_ID());
  echo "</li>";
endwhile;

これを下記に差し替えると、とりあえずカスタム投稿に対応できます。

wpfp-page-template.php
foreach ($favorite_post_ids as $post_id) {
  $p = get_post($post_id);
  echo "<li>";
  echo "<a href='".get_permalink($post_id)."' title='". $p->post_title ."'>" . $p->post_title . "</a> ";
  wpfp_remove_favorite_link($post_id);
  echo "</li>";
}

細かいテストなどは行っていないんですが、実際に上記変更をすることでたしかに一部を上記のように差し替えることでカスタム投稿に対応はできたので、あとはこれを参考にしてカスタマイズすれば自分好みにお気に入り登録一覧を出せそうです。
この方法は以下フォーラムで紹介されていたものです。


以上、「WP Favorite Posts」についての使い方とちょっとしたカスタマイズ方法でした。
デフォルトでカスタム投稿タイプが非対応など少し残念な部分もありますが、全体的には手軽に実装できて凄く良いプラグインだと思いますし、冒頭にも書いたように使い方次第では会員系サイトなどでいろいろな使い方ができると思います。

プラグインに関しての詳細やダウンロードは以下よりどうぞ。