Welcartにレビュー機能を追加する方法
スポンサーリンク
ECサイトの商品ページには、今やあって当然の評価&コメント欄。ですがWelcartのデフォルトテーマにはコメント機能はありません。
WordPressのコメント機能をそのまま使えば、簡単にコメント機能をつけられます。
下記コードがWordPress標準のコメントフォームを表示させるコードです。
<?php comment_form(); ?>
更に、投稿コメントを表示させるコードはまた別にありますので、こちらもお忘れなく。
<ul> <?php wp_list_comments(); ?> </ul>
上記の2種類のコードを好きな場所(例えばsingle.phpなど)に入れれば、コメントフォームの表示が出来ます。
コメント機能の設定
Welcart用にWordPressのコメント機能を使う場合、公開設定は「承認制」にしましょう。いたずらによる投稿やスパムコメントがあっても、承認制ならば表示前に対応可能となります。
設定場所:[ダッシュボード]→[設定]→[ディスカッション]
「コメント表示条件」の「コメントの手動承認を必須にする」にチェックを入れておきましょう。
Welcart向けに、コメントの入力項目の表示をカスタマイズ
WordPressの標準のコメント機能の表示のままだと、「コメントを残す」といった表題や、ユーザーのWebサイトURLなど不要な入力項目が、ECサイトの商品コメント用としては違和感があります。
そこで、コメントフォームを表示させる<?php comment_form(); ?>を、カスタマイズしたコードに変更します。コメントフォームのカスタマイズは下記サイトを参考にさせて頂きました。
- WordPress:コメントフォームをカスタマイズする方法(NxWorld)
- テンプレートタグ/comment form(WordPress Codex日本語版)
<?php comment_form( array( 'title_reply' => 'この商品のレビューを投稿する', 'comment_notes_before' => '<p>メールアドレスは公開されません。いたずら防止のため承認制を取らせて頂いております。</p>', 'fields' => array( 'author' => '<p><label for="author">お名前(ハンドルネーム可)' . ( $req ? ' <span>*</span>' : '' ) . '</label> ' . '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>', 'email' => '<p><label for="email">' . __( 'Email' ) . ( $req ? ' <span>*</span>' : '' ) . '</label> ' . '<input id="email" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>', 'url' => '', ), 'comment_notes_after' => '<p>内容をご確認の上、「レビューを送信する」ボタンから送信下さいませ。</p>', 'label_submit' => 'レビューを送信', ) ); ?>
先ほど挙げた参考サイトに記載されているように、functions.phpにカスタマイズコードを書いてもいいですし、上記のコードをコメント専用テンプレートcomments.phpに記載して、single.php内(Welcart利用者ならwc_item_single.php内)のコメントを表示したい場所に<?php comments_template(); ?>として読み込んでも良いと思います。
Welcartとブログを同じWordPressで動かす場合は、ECサイトでのコメントフォーム(上記)とブログのコメントフォームが同じにならないように、カテゴリー判別の条件分岐を入れると良いでしょう。
追記:次のエントリーではレビュー機能に星による5段階評価を入れる方法を解説しています。
初めまして。ウェルカートでショップを運営しているものです。商品ページに商品のレビューを入れたくて試行錯誤しながら、コメント欄を利用することに行き着いたのですが、その表示が思うようにできません。
まめ子さんのこちらの説明でようやく希望が見えたと思ったのですが、コメントの配置が、商品紹介の冒頭に出てしまって、どうしても下方に表示できません。
single_item.phpに挿入しているのですが、
はページの下方に表示させる挿入場所はどのあたりでしょうか。
または、前後になにか記述が必要なのでしょうか。
php初心者でお恥ずかしいのですが、ご教授いただければと思い切ってコメントしました。お返事をいただければ幸いです。
もしかして、single_item.phpはfunctions.phpで使用中のテーマに退避させてませんでしょうか?こちらは古いテンプレートで、現在はwc_item_single.phpに置き換わっています(こちらやこちらをご参照)。うまく行っていないのは、恐らく全てPHPで書かれたsingle_item.phpを使っていらっしゃる為ではないかと思います。comment_formはそれだけで(echo等なしで)表示をする出力系のテンプレートタグなので(returnで取得は出来ない)、single_item.phpのように全てをreturnで取得してから最後にまとめて出力させるようなコード郡の中に書くと、前方にはじき出されて表示されてしまいます。
ですので、まずはwc_item_single.phpをお使いになった上で、本文を出力するthe_content();よりも下に、コメントフォームまたはコメントテンプレートを呼び出すコードを置けば解決すると思います。
早々にお返事をいただきながら、返しもしなくて申し訳ありませんでした。
まめ子さんのご説明でうまく表示ができました。本当にありがとうございます。
しかし、今新たな問題がおこり、コメントを送信し、管理画面で承認しても、コメントページにそのコメントが表示されないのです。
このページの冒頭にある
も挿入しましたが、表示できませんでした。大雑把にコードを書くと、
となります。
どこか足りないところや、single.php以外に触るところがあるのでしょうか。
Welcartを使っていて、商品ページにコメントを表示させたいのでしたら、single.phpではなくwc_item_single.phpにコメントを読み込むコードを挿入する必要があります。そうしているのに出ないのでしたら、すみませんがわかりません・・・。
ありがとうございました!
いろいろやってみたら、表示ができました!
single.phpで、商品ページにだけ表示させる文言を入れ、comments.phpで表示させたくない項目を消しました。
またこれから、レビュー機能に星をつける方法もやってみます。
どうもありがとうございました。
私は全くお役に立てていないような気が致しますが^^;、うまく行って良かったですね。充実したショップ作り、頑張って下さい!