クロピグログ

職業訓練で学んだことまとめ

【WordPress授業十三日目】コメント機能を追加

コメントモジュールテンプレート「comments.php」を読み込みます。

もし「comments.php」が存在しない時はWordPressがもっているコメントモジュールテンプレートを読み込みます。

ループ内でもループ外でも呼び出すことができます。

今回は「comments.php」を作らない

 

036:コメント機能を追加 | JOBTECH.JP

 

◆簡易版コメント機能実装

   <?php comments_template(); ?>

・簡単にコメント機能を実装できる

・ただしカスタマイズがほとんどできない

・「comments.php」というコメント専用テンプレートの読み込み

・自前で「comments.php」を作成していないとWordPressが元々もっているテンプレートが読み込まれる

WordPressが元々もっているテンプレートにcomment_form関数やget_comments関数が記載されている

 

 

◆詳細版コメント機能実装

$args = [
  'title_reply' => '口コミを書く'// タイトルの文字列を変更
  'cancel_reply_link' => '取り消す'// 返信を押下後の「コメントをキャンセル」の文字列変更
  'label_submit'  => '口コミ投稿する'// 送信ボタンの文字列を変更
  'comment_notes_before' => 'フォーム前の好きな文章',
  'comment_notes_after' => 'フォーム後の好きな文章',
];
comment_form($args);

 

 

◆コメント内容の表示

$args = [
  'status' => 'approve'//承認済み
  'order' => 'desc'//新しいコメント順
  'post_id' => $post->ID //この投稿詳細のコメント
];
$commentList = get_comments($args);
// get_comments関数:対象コメントを取得
// 引数で取得するコメントの条件指定
 
?>
<?php /***** コメントループ開始 *****/ ?>
<?php if ($commentList) : ?>
  <?php foreach ($commentList as $comment) : ?>
    <div class="Comment__item">
      <div class="Comment__author">
        <?php echo esc_html($comment->comment_author); //投稿者の名前
        ?>
      </div>
      <div class="Comment__date">
        <?php comment_date("Y/m/d"); //投稿日
        ?>
      </div>
      <div class="Comment__text">
        <?php comment_text($comment->comment_id); //コメントの本文
        ?>
      </div>
    </div>
  <?php endforeach?>
<?php endif?>
<?php /***** コメントループ終了 *****/ ?>

◆コメント表示の流れ

サブループに似た流れ

1.条件指定してコメントを取得

2.コメントループを作成

3.コメントループ内で必要情報を表示

 ※コメント情報表示用テンプレートタグを使う

 調査キーワード「WordPress コメント テンプレートタグ」

 ※テンプレートタグがない場合はオブジェクト内のプロパティを直接参照して出力

◆コメントパーツの作成方法

1.「comments.php」を作成

 「comments_template()」を使用

 ※comments_template()がWordPressの初期「comments.php」を使用しなくなるので注意!

2. 好きなファイル名で作成

 「get_template_part()」で読み込み

 

 

固定ページにコメント機能実装する場合は「コメント許可」する

f:id:chromiumpig:20201124122211p:plain

 

◆コメント許可を取得して、分岐する

<?php if ($post->comment_status == 'open') :
comments_template();
endif?>

$post:ループで使用する

  ページ情報の入った暗黙変数

  comment_statusプロパティ

  コメントの許可情報

  ・許可している:'open'

  ・許可していない:'closed'