トップへ戻る
BLOGS

wordpress 好きな場所にコメント欄を追加①

wordpress 好きな場所にコメント欄を追加①

今回は自身のページにコメントがほしい、、

いや、気軽にコメントを残せるフォームがあればいいなぁと思い、WordPressに備えられた関数を使用し、

コメント欄、コメントフォームの実装

までやりたいと思います。

まずコメント機能を設定から使用できることを確認したら、

表示したい場所、今回はブログ記事の下に以下の関数を記述します

<?php comments_template(); ?>

この関数はコメントフォームを読み込み表示する関数です

投稿や固定ページ何でも取れるようです

そしてコメント欄表示、投稿用のフォームを読み込みます

引数を指定しなければcomments.phpを読み込みます

ということで次はcomments.php を書いていきます。

<section class="comments">
  <?php
  comment_form();
  if(have_comments()) :?>
  <p><?php comments_number(); ?></p>
  <ol class="comments_list">
    <?php wp_list_comments(); ?>
  </ol>
  <?php pagenate_comment_links();
  endif; ?>
</section>

ひとまずこれでコメントフォームは表示できるようになりました。

まずは上記の関数の解説をしていきます。

comment_form($args , $post_id);

この関数を実行した場所でコメントフォームが表示されます。

これで表示されたフォームは定型のHTMLが出力されるためCSSが指定しづらいため$argsでパラメータを変更し出力方法を変更していきます

はい。

いきなり訳がわからないのでしっかりと説明します。

'comment_field' => $comment_field,

最上部からの変数はパラメータとしてのHTMLの値を制作しています

そしてその全体を覆っているsprintf関数は

「あるフォーマットに従った文字列を返す」関数です。

sprintf(文字列のフォーマット, 入力したい文字1,入力したい文字2,・・・)

のように引数を取ります

そして第一パラメータのフォーマットでは

‘<p class=”comment-form-comment”>%s %s</p>’,としまして、%s %sには入力したい「文字列」が順番に入るようになります

ちなみに数値をフォーマットする場合は「%d」と置き換えて引数に数値を入れます。

ということで最初の%sに入る文字列は、

sprintf(
      '<label for="comment">%s</label>',
      'コメントよろしくお願いいたします'
    ),

とこのようになり、ここでも同じ関数を使用しフォーマットしています。

ここでは‘コメントよろしくお願いいたします’%sに入る文字列になります

そして元のフォーマットの%sには

<textarea id="comment"・・・・略・・

が入ることになり結果としてHTMLが出力されます

'title_reply' => 'コメントをお待ちしております',

ここの部分はコメント欄のタイトルなるところです

'label_submit' => 'コメントを残す',

ここはコメントを送信する文言を設定しています。

ユーザー情報入力フォームを変更する

ここからは入力するための条件でもある

ユーザー情報をどう入力するかを変更していきます。

具体的には、

先のcomment_form関数の引数$fields に変更を加えることでも可能ですが、一般的にはfunction.phpでフックを使用するようなので今回はこちらを使用します

comment_form 関数では、まずユーザー情報入力フォームを表示するためのデフォルトの HTML が連想配列 $fields に格納され、

続いてその $fields を必要に応じて変更できるように ‘comment_form_default_fields’

フィルターフックにフックされた関数が実行されるようになっています。

ということでこのフィルターフックに対して変更を加える関数を実行することで変更が可能になります。

function my_comment_form_default_fields($args) {
 $args['url'] = '' ;
 $args['cookies'] = '';//Cookie情報欄を削除
	// $args['author'] = '';
	// $args['email'] = '';
return $args;
}
add_filter('comment_form_default_fields','my_comment_form_default_fields');

$args[‘url’] = ” ;にて空の値入れてコメントフォームのサイトを削除しています、また

$args[‘cookies’] = ”;にてCookie情報を残すかどうかの一文を削除しています

さてだいぶ出来てきましたが長くなってきたので続きは次回にします。

コメントをお待ちしております

お気軽にコメントをどうぞ。

CAPTCHA