この記事の評価: 5.0(4件のレビュー)
最近ハマっているプラグインが「WP Customer Reviews」。
レビュー・口コミサイトを作って放置したまま、勝手にクチコミ情報が集まるコンテンツが出来上がれば理想的ですね。
レビュープラグインの中では優秀な部類なのですが、無料プランのままだと何かと残念なところが多いです。
しかしいじればなんとかなりそうなのでカスタマイズしがいがあります(・∀・)
前回は平均評価値を任意の場所に表示できるようにしてみました。
今回は最新の口コミ投稿を表示できるようにしてみたいと思います。
WordPressで「最近のコメント」をサイドバーに表示している人は多いかと思います。
同じように「最近のレビュー」を表示するのが目標です。
んで、実は「WP Customer Reviews」では最近のレビューを表示できるようなショートコードが用意されています。
この[WPCR_SHOW]を使うと任意の場所にレビューを表示できます。
んでショートコードに引数を渡せば、表示をそれなりにカスタマイズ可能。
「POST=”ALL”」の指定で全レビューから最新のものを表示できますし、「SHOWFORM=”0″」を指定すれば投稿フォームを非表示にできます。
便利ですね(・∀・)
が、しかし!このショートコードでは記事にリンクされません!!
たとえば「最近のコメント」だとコメントの付いた記事へのリンクが表示されますよね。
コメントだけ読んでもナンノコッチャ!ってなりますので、そこから元記事へ飛んで内容を確認するまでがワンセットになるはずです。
レビューも同様で、何に対してのレビューなのか?をリンクをつけてユーザーに伝えてあげる必要があります。
というわけで、最近のレビューに元記事のリンクを追加するようにカスタマイズしてみましょう!
【追記】
改めてよく見たらレビューから記事にリンクありました(*´Д`)
なぜか記事タイトルではなく、サイト名でのリンクになってましたが・・・
「WP Customer Reviews」で使われているDBを調べる
前回と同様にデータベースから直接持ってきます。
簡単におさらいすると
【wp_postmeta】
・wp_postに紐づくID
・元記事のID
or
・wp_postに紐づくID
・名前
or
・wp_postに紐づくID
・タイトル
or
・wp_postに紐づくID
・評価値(レート)
などなど。
ざっくりと取得方法を説明すると、
wp_postからレビューのデータを抜き出し、それに紐づくデータ(元記事ID、名前、レートなど)をwp_postmetaから取得。
取得した元記事IDから記事タイトル、パーマリンクを取得。
それらをいい感じHTML出力する(・∀・)
抽出用のSQL文はこんなかんじになります。
SELECT wp_posts.ID, wp_posts.post_title, wp_posts.post_date_gmt AS date, wp_posts.post_content AS content, meta1.meta_value AS name, meta2.meta_value AS post_id, meta3.meta_value AS star FROM wp_posts INNER JOIN wp_postmeta AS meta1 ON wp_posts.ID = meta1.post_ID AND meta1.meta_key = 'wpcr3_review_name' INNER JOIN wp_postmeta AS meta2 ON wp_posts.ID = meta2.post_ID AND meta2.meta_key = 'wpcr3_review_post' INNER JOIN wp_postmeta AS meta3 ON wp_posts.ID = meta3.post_ID AND meta3.meta_key = 'wpcr3_review_rating' WHERE post_type='wpcr3_review' AND post_status='publish' ORDER BY wp_posts.ID DESC
出力したいレビュー項目によってJOINする回数も増えていきます。
サンプルではレビュー内容・日付の他に
・投稿者名
・評価値
・post_id
をwp_postmetaから取得しているのでINNER JOINを3回繰り返しています。
この他にメールアドレスの項目を引っ張ってきたり、webURLの項目を引っ張って来る場合は、それに応じてwp_postmetaのJOINを追加します。
「WP Customer Reviews」の最新レビューをリンク付きで表示するコード
「最新レビュー」を「最新のコメント」みたいにウィジェットで使えるように、ショートコード化してみましょう。
下記のコードをfunction.phpに貼り付けるだけで使える・・・はず(・∀・)!
【php】
function fc_newreview_output($atts){ global $wpdb; // クエリ $query_str = "SELECT $wpdb->posts.ID, $wpdb->posts.post_title, $wpdb->posts.post_date_gmt AS date, $wpdb->posts.post_content AS content, meta1.meta_value AS name, meta2.meta_value AS post_id, meta3.meta_value AS rating FROM $wpdb->posts INNER JOIN $wpdb->postmeta AS meta1 ON $wpdb->posts.ID = meta1.post_ID AND meta1.meta_key = 'wpcr3_review_name' INNER JOIN $wpdb->postmeta AS meta2 ON $wpdb->posts.ID = meta2.post_ID AND meta2.meta_key = 'wpcr3_review_post' INNER JOIN $wpdb->postmeta AS meta3 ON $wpdb->posts.ID = meta3.post_ID AND meta3.meta_key = 'wpcr3_review_rating' WHERE post_type='wpcr3_review' AND post_status='publish' ORDER BY $wpdb->posts.ID DESC"; // SQL実行 $results = $wpdb->get_results($query_str); // 初期値設定 $review_count= 0; $str_output = ''; $atts=shortcode_atts(array( 'num' => 5, 'len' => 50 ), $atts); // ループ foreach ($results as $review_row): $date = date_create($review_row->date); $str_output .= '<div class="new_review_list">'; $str_output .= '<a href="'.get_permalink( $review_row->post_id ).'">'.get_the_title( $review_row->post_id ).'</a><br>'; $str_output .= '<p class="new_review_list_head">評価:<span class="new_review_list_rate">'.$review_row->rating.'</span> by <span class="new_review_list_name">'.$review_row->name. '</span>(' .date_format($date, 'Y年m日d日').')</p>'; $str_output .= '<p>'. mb_substr($review_row->content,0,$atts['len']) .'</p>'; $str_output .= '</div>'; $review_count++; if($review_count >= $atts['num']): break; endif; endforeach; return $str_output; } add_shortcode('sc_newreview_output', 'fc_newreview_output');
【ショートコード】
表示したい箇所に次のショートコードを貼り付けます。
[sc_newreview_output]
括弧は半角に変えて貼り付けてください!
【引数】
引数は2つ用意しました。
num:表示件数を設定します。初期値5個
len:レビュー内容の最大文字数を設定します。初期値50文字
【出力例】
[sc_newreview_output]
↓↓↓
評価:4 by 山手線(2021年06日27日)
購入ページにて開発者の方が、使用する前に付属の説明書を良く読んでからの使用を進めていたので、まず説明
[sc_newreview_output num=3 len=20]
↓↓↓
【CSS】
お好みに応じて書き換えてください♪
.new_review_list { border: 1px solid #ddd; border-radius: 5px; padding: 10px; margin-bottom: 10px; } .new_review_list_head { font-weight: bold; color: #444; } .new_review_list_rate { color: red; }
おわり
なんとなくソレっぽいものが作ることが出来ました(・∀・)
SQLの条件文を変えれば、カテゴリ別に抽出することも可能です。
面倒なのでやりませんが・・・
「WP Customer Reviews」は他にもイジりたいところが、いくつかありますので機会があったら股記事にしてみたいと思います。
コードを貼り付けてみて動かなかった場合はコメントくださいませ。
分かる範囲で対応していきたいという心意気だけはあります(^ν^)
4件のレビューがあります
「SQLの条件文を変えれば、カテゴリ別に抽出することも可能です。」
できればカテゴリー別に表示できれば最高です。
是非教えてください。よろしくお願いします(^^♪
てstで
参考になった、できればカテゴリー別に表示できれば最高!
記事はすごく参考になるけど、レビューコメントろくなのなくて笑う
レビューを投稿しよう\(^o^)/ | |
コメント