ご注意ください!
WordPress 4.4からテンプレートの仕様が変わり、下記の方法ではメールアドレスを入力必須項目から外すことができなくなりました。
「WordPress 4.4で掲示板を作る」を書きましたので、そちらも合わせてご参照ください。
当サイトのゲストブックは、これまでCGIによるフリーの掲示板ソフトを使っていましたが、スパムが大量にやってくるようになったため、新たにwordpressを使用して作成し直すことにしました。
私が作成したい掲示板(=ゲストブック)の完成目標は、以下の5項目。
- ①wordpressのコメント機能を利用してゲストブックを作る。
- ②メールアドレスは入力必須項目から外し、webアドレスの入力フォームは削除する。
- ③ゲストブックのページだけ、デザインを変更する。
- ④ファイルをアップロードできるようにする。
- ⑤画像認証を設置する。
①wordpressのコメント機能を利用してゲストブックを作る
「レンサバネット」の「WordPressに掲示板を簡単に設置する方法」を参考にさせていただきました。(こちらのサイトは現在リンク切れとなっています)
1.固定ページに掲示板用のページを新規作成します。
本文は空白でも構いません。当サイトではページタイトルを「guestbook」としました。
それだけでも、掲示板ページが出来上がるのですが、私はメールアドレスを入力必須項目から外したいので、
2.ディスカッションの設定で、「名前とメールアドレスの入力を必須にする 」のチェックを外します。
②メールアドレスは入力必須項目から外し、webアドレスの入力フォームは削除する。
「「Dragon-Ark」の【wordpress】コメントの必須項目を変更する(メールを必須としない)を参考にさせていただきました。
wp-comments-post.phpの以下のコード(wordpres.ver3.5.2の場合75行目辺り)をコメントアウトして、Eメールの入力チェックを無効にします。そして新たに名前を必須項目にするコードを追加します。
/**コメントアウトここから if ( get_option('require_name_email') && !$user->exists() ) { if ( 6 > strlen($comment_author_email) || '' == $comment_author ) wp_die( __('<strong>ERROR</strong>: please fill the required fields (name, email).') ); elseif ( !is_email($comment_author_email)) wp_die( __('<strong>ERROR</strong>: please enter a valid email address.') ); } コメントアウトここまで*/ //追加部分ここから if(!$user->ID){ if ('' == $comment_author) wp_die('名前を入力して下さい。'); } //追加部分ここまで名前とEメールの入力欄を残して、ウェブサイトの入力欄を削除するには、wp-includesフォルダの中にあるcomment-template.phpを編集します。以下のコード部分を探して(wordpres.ver3.5.2の場合1524行目辺り)websiteのフォーム部分を削除したコードに置き換えます。
以下のコード部分を削除する
$fields = array( 'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' . '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>', 'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' . '<input id="email" name="email" type="text" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>', 'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' . '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>', );以下のコードに置き換える
[※記述ミスがあったため、4行目を修正しました。20013年8月15日]$fields = array( 'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' . '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>', 'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label>' . '<input id="email" name="email" type="text" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30" /></p>' );③ゲストブックのページだけ、デザインを変更する。
1.使用中のテーマ(私の場合「twentyeleven」)に新規テンプレートを追加します。
2.新規テンプレートを作成するには、テーマのpage.phpを開き、任意の名前を付けて保存します。例えばpage-guestbook.phpとか。
3.新規に追加したテンプレートは、テンプレートネームを変更します。
テンプレートファイルの冒頭に記述されているTemplate Nameを任意の名前に変更。
たとえば以下のように書き直します。<?php /* Template Name: guestbook */4.最初に作成した固定ページguestbookを開いて、テンプレートの項目からguestbookを選択すると、テンプレートがデフォルトから、guestbookのテンプレートに変更されます。
5.guestbookのテンプレートを編集する。
ゲストブックのページには、ヘッダーイメージやメニュー項目を表示させたくなかったので、テーマのheader.phpをコピーして新たにゲストブック用のheader-2.php(名前は任意)を作成しました。
6.header-2.phpからヘッダーイメージやメニュー項目に当たる部分のコードを削除します。
(※2014年12月現在、ヘッダーイメージは表示するように、レイアウトを変更しました。)
7.guestbookのテンプレートにheader-2.phpを読み込ませるには、get_header(); ?>の()部分に、読み込ませたいheaderの名前を記述します。<?php /* Template Name: guestbook */ get_header(2); ?>④ファイルをアップロードできるようにする。
コメント欄に画像などのファイルをアップできるようにする「プラグインcomment-image」を導入しました。
1.プラグインの新規追加画面でcomment-imageを検索
2.いますぐインストールをクリック
3.プラグインの有効化をクリック
有効化するだけで、画像 (GIF, PNG, JPG, JPEG)をアップすることができます。
特に設定画面もないので、どうしても変更したいところがあれば、comment-imageのPHPファイルやcssファイルを直接書き直すことになります。⑤画像認証を設置する。
ほとんどのスパムは、wordpressの最強スパムブロックプラグイン「Akismet 」がキャッチしてくれるので、ブログに表示されることはありませんが、画像認証なしだと、やはりスパムがゾクゾクやってきます。認証無しってことは、ドアを開けっ放しにしているのと同じなんですね。
そこで、SI CAPTCHA Anti-Spam(コメント画像認証導入プラグイン)を導入することにしました。「WordPress超初心者講座」の「SI CAPTCHA Anti-Spam(コメント画像認証導入プラグイン)」を参考にさせていただきました。
1.プラグインの新規追加画面でSI CAPTCHA Anti-Spamを検索
2.いますぐインストールをクリック
3.プラグインの有効化をクリック
4.管理画面のプラグイン項目からSI CAPTCHA オプションを開いて、必要なら設定をする。
オプションの設定は、デフォルトのままでも特に問題ありません。[追記]2015年2月22日 SI CAPTCHA Anti-Spamは不要になりました。
先月SiteGuard WP Pluginを導入したのですが、SI CAPTCHA Anti-Spamを有効化したままにしていたので、画像認証の入力画面が2個にダブっていることに、今頃気が付きました。
SiteGuard WP Pluginは「管理ページとログインに関する攻撃からの防御に特化したセキュリティプラグインです。ブルートフォース攻撃、リスト攻撃等の、不正にログインを試みる攻撃や、コメントスパムを受けにくくするための機能です。画像認証の文字は、ひらがなと英数字が選択できます。」
という優れものです。
[追記]2014.4月19日
上記の方法で掲示板を作るにあたって注意すべきことWordPressをアップグレードするたびに、「wp-comments-post.php」とwp-includesフォルダ内の「comment-template.php」の二つのコアファイルを、変更箇所を探して書き換えなければなりません。
WordPress3.7からはアップデート(マイナーアップデートのみ)が自動で更新されるようになったため、コアファイルが勝手に上書きされてしまいますから、要注意です。
やはり、コアファイルをカスタマイズするのはあとあと面倒ですね。【追記2】2014年11月21日
コメント入力フォームの位置についてコメントの入力フォームを掲示板ページの上位に設置したい場合、使用しているテーマのテンプレートファイルcomments.phpを開いて、<?php comment_form(); ?>タグの記述位置を変更します。
デフォルトではテンプレートの最後行あたりに書かれていると思いますが、それを上方にある<?php if ( have_comments() ) : ?>タグの、すぐ上に移動させます。
テスト1
大きいサイズの画像をアップロードされた場合はどうなりますか
問題無く、アップロードできますね。
当方の場合は、大きい画像をアップロードしようとすると、wp-comments-post.php画面で真っ白になってしまい、解決方法が分からずこちらにたどり着きました。
何が違うか分からないのですが、とりあえず、失礼しました。
コメントをありがとうございます。
テスト
ピンバック: WordPressで掲示板を作るには | blog
ピンバック: WordPress忘備録2013/07/16版 | "unknown"lab.