今回のご依頼は、クライアント様がデザインしたWordpressサイトに「いいね」機能をつけることができないかというご依頼。
既に、Favoritesプラグインを導入済みで、パッと見、表示はできているが動作が怪しい。
どのように動作が怪しいかというと、ハートアイコンをクリックしてもリアルタイムにいいね数が変わらないのと、ページごとのいいねが正しく集計できていないの2点。
do_shortcode での実装は×
Favoritesプラグインは、投稿ページにショートコードを記載するだけで簡単にいいねボタンを追加できます。
そこで、テーマファイルの中でショートコードを使うにはどうするかということで、do_shortcode 関数を使って実装していたようです。
静的コンテンツのショートコードであれば、これでいいのですが。Favoritesプラグインの場合、Ajax要素があるのでdo_shortcodeでの出力では、コードが不足します。
プラグインのドキュメントをちゃんと読もう
Favoritesプラグインのドキュメントを読めばちゃんとPHPコードに使える関数が記載されています。今回の場合は、the_favorites_buttonとthe_favorites_countの2つを使います。
the_favorites_button ボタンを表示する関数
<?php the_favorites_button(get_the_ID()); ?>
get_the_ID は該当ページのIDを返す関数です。
the_favorites_button関数は、ページIDを渡すことで該当ページに対して付加されたいいねの状態が表示されます。
the_favorites_count いいねの数を表示する関数
<?php the_favorites_count(get_the_ID()); ?>
ボタン表示と同様ですが、こちらは該当ページに対して付加されたいいねの数が表示されます。
the_ / get_ 関数を知ろう
WordPressの関数には、頭文字が、the_ で始まるものと get_ で始まるものの2種類があります。
これらの違いは、the_ の関数は結果を print する関数で、get_ は結果の値を変数として出力するという違いがあります。
テーマファイル内で、直ちにその場でブラウザに出力してOKという場合は、the_の関数を使います。もし、結果の値に何か手を加えて、あとで出力したい場合は、get_関数を使うといった感じで使い分けます。
テーマファイルの改修
上記の関数を使用するようにテーマファイルの更新を行いました。
もちろん、表示も問題なく、クリックでいいね数がリアルタイムに反映するようになりました。