「WP Favorite Posts」はサイト独自のお気に入り機能を実装できるプラグインで、ECや不動産などの会員を絡めるようなサイトをWordPress使って作る際に便利なプラグインのひとつだと思います。以前から気になっていたので少し触ってみたら良い感じだったので、その時の備忘録も兼ねて使い方など簡単に紹介します。
きっかけは「かちびと.net」さんの「「この記事をお気に入りに追加」を実装できるWordPressプラグイン・WP Favorite Posts」というエントリーで知ったんですが、このエントリーでも紹介されているように、ECサイトであれば「気になる商品一覧」とか不動産サイトであれば「気になる物件一覧」みたいな会員サイトとかでよく見かけるお気に入り登録機能のようなものを簡単に実装できます。
お気に入り登録したい際のデータは、ログインユーザーに関してはデータベースに保存、そうでない場合もCookieを利用するというタイプなので、会員を持たないようなサイトでも使うことは可能です。
ただ、Cookieを使用する場合、例えば「この記事は○人の方にお気に入り登録されています」というようなものを表示させたい時は正確な数が出せなかったりもするので、そういったコンテンツを正確な数値で管理・表示したい場合などはログインユーザーを用いたほうが良いと思います。
WordPress:お気に入り登録機能を実装できるプラグイン「WP Favorite Posts」 目次
1. インストール
- 「WP Favorite Posts」からダウンロードしてFTPなどでpluginsにアップロードしてプラグインを有効化。
もしくは、管理画面から検索・インストールしてプラグインを有効化します。 - 有効化するとメニュー「設定」の箇所に「Favorite Posts」という項目が追加され、そこで各種設定が行えます。
- 詳しくは後述しますが、設定画面で表示させたい箇所にチェックを入れる又はショートコードやテンプレートタグで表示させたい箇所に記述することで実装ができます。
2. 各種設定
表示される位置やテキストなど、プラグインの各種設定は「設定 > Favorite Posts」で行います。
設定は大きく3つに分かれており、それぞれ下記のようになっています。
Options
Optionsでは、配置場所や画像の有無といった設定を行います。
それぞれの項目は以下を設定するものです。
- Only registered users can favorite
- チェックを入れると、登録されたユーザーのみ使用できるようにします。
- Auto show favorite link
-
お気に入りに追加するためのアイコンやテキストをどこに表示させるかを選択します。
設定方法には3タイプあり、それぞれ以下のようになっています。- Custom
任意で設置したい場合に選択し、テンプレートで表示させたい箇所に<?php wpfp_link() ?>
を記述します。 - After Post
記事下に表示されます。 - Before Post
記事前に表示されます。
- Custom
- 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
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
Advanced Settingsでは、プラグインに同梱されているCSSとJSを使用するかどうかの設定になります。
基本チェックを入れずにそのまま使用するので良いと思いますが、何かしらの理由で無効にしたい場合はそれぞれチェックボックスにチェックを入れれば無効化されます。
3. 使い方
3-1. 登録テキストを表示する
設定部分でも書いたのですが、記事の上下いずれかに表示したいだけであれば「Auto show favorite link」の項目を使用して簡単に設置することができます。
そうではなく、任意で配置をしたいという場合は「Auto show favorite link」で「Custom」を選択し、表示させたい箇所に以下を記述します。
<?php wpfp_link() ?>
また、ショートコードを使用して表示させることもでき、ショートコードを使用したい場合は以下のように記述します。
[wpfp-link]
3-2. ウィジェットで一覧を表示する
テーマでウィジェットを有効にしている場合は、登録されたお気に入り一覧をウィジェットで表示させることもできます。
ウィジェットには2種類あり、閲覧ユーザーだけのお気に入り一覧を表示するUser’s Favoritesと、ユーザー全体でお気に入り登録が多数されているものを一覧表示するMost Favorited Postsがあります。
使い方はどちらも一緒で、表示するタイトルと投稿数をそれぞれ設定して保存するだけで使用できます。
ちなみに、ウィジェットの見栄えやコード、1件もお気に入りが登録されていない時に表示される文字列など変更したい場合は、プラグイン内にあるwpfp-your-favs-widget.php
で変更することができます。
3-3. 登録一覧を表示する
お気に入り登録されたものを一覧表示させたい時は、表示させたい箇所に以下を記述します。
一覧表示には予めページネーションも用意されており、デフォルトでは20件以上の登録がある場合は21件目から2ページ目に表示されるようになります。
表示件数は「Options > Favorite post per page」で設定ができます。
<?php wpfp_list_favorite_posts(); ?>
また、ショートコードを使用して表示させることもでき、ショートコードを使用したい場合は以下のように記述します。
[wp-favorite-posts]
4. プチカスタマイズ
このままでも十分便利なプラグインではあるのですが、もっとこうだったら…っていうのもあったので、それの実装方法を備忘録兼ねて紹介します。
4-1. 一覧にアイキャッチを表示させる
お気に入りの一覧表示はデフォルトで<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()
の記述箇所を変更してください。
今回はアイキャッチですが、記事の投稿日を出したいとか抜粋も出したいなども同じ感じでいけると思います。
この方法は以下を参考にさせてもらいました。
4-2. カスタム投稿タイプでも使用可能にする
デフォルトの投稿だけであれば問題なく使用できるのですが、実はこのプラグインは一覧表示部分などがカスタム投稿タイプには対応していません。
プラグインのフォーラムにも何人かの方がそれについて質問をしているので、対応方法を作者が回答したり、アップデートで対応してくれる可能性はあるかなと思っていたんですが、プラグイン作者が「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」についての使い方とちょっとしたカスタマイズ方法でした。
デフォルトでカスタム投稿タイプが非対応など少し残念な部分もありますが、全体的には手軽に実装できて凄く良いプラグインだと思いますし、冒頭にも書いたように使い方次第では会員系サイトなどでいろいろな使い方ができると思います。
ここで紹介されている以外の便利なカスタマイズだったり、もっとスマートな方法とかがあれば是非教えてください。