質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.02%

  • PHP

    17738questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    5978questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

WordPress コメント追加、表示

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 320

SatoruShimono

score 10

1、実現したいこと
wordpressのコメント欄に書き込んだ人のタイプと記事の評価を追加したい
それらをコメントの一覧ページ(comments.php)で値を取得し、表示させたい

2、できない原因
独自の追加した要素のカラムがDBにないため値が取得できない

3、参考サイト
こちらをご覧ください

上記のサイトに一通りのやり方は書いてあるのですが

WordPressのインストールディレクトリにある、wp-comments-post.phpを編集します。92行目あたり(WordPress3.9.1時点)に、以下を追加します。

のように○行目と書いてあり、WordPressの最新verである4.8.2には
そのファイルには全体で62行までしかないのです。
実際どこに挿入すればいいのかわかりませんでした。

4、質問内容
・現在のWordPressのバージョンではどこに挿入すればいいのか
・又この館でできない場合、もっとも簡単な方法を教えてください
・追加も表示もできるプラグインがある場合教えてください

以上になります。
回答をお待ちしております。
宜しくお願い致します。

*追記

  <h2>レビュー</h2>
    <?php if(have_comments()): ?>
      <ul>
        <?php
          $comments = get_comments(array(
            'status' => 'approve',
            'number' => 4  //四件表示
          ));
          foreach ($comments as $comment) {?>
          <li>
            <h3><?php the_title(); ?></h3>
            <p><?php comment_author(); ?></p>
            <p><?php echo mb_substr(get_comment_excerpt(), 0, 30); ?></p>
            <a href="#">続きを読む</a>
          </li>
        <?php };?>
      </ul>
    <?php else : ?>
      <p>まだ投稿されていません。</p>
    <?php endif; ?>
    </div>

    <?php comment_form(); ?>

functions.phpは参考サイトと全く同じです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

コアを弄るような阿呆な記事は参考にされない方が良いです。

【wordpress】コメントの入力欄を追加する/wp_list_comments表示カスタマイズ
http://satohmsys.info/wp_list_comments_custom/

おっと失礼しました

4、質問内容
・現在のWordPressのバージョンではどこに挿入すればいいのか
・又この館でできない場合、もっとも簡単な方法を教えてください
・追加も表示もできるプラグインがある場合教えてください

上から順に
最初のはコメントした通り。
真ん中は逆に質問、この館とは何ですか?簡単な方法はコメントの通り。
最後は分かりません。

書き込んだ人のタイプと記事の評価

評価は分かりますが、タイプはなんですか?
性別?血液型?

何であれ先に記したサイトの方法でどうにでもなると思います。
分からなければ訊いてください。

追記
タイプと評価の入力方法など分からないので例に挙げたサイトのコードをそのままです。
レイアウトを含め自身が想うように変更してください。

functions.phpにコメントフォームへの項目追加とデータベースに保存する設定のみ追加

// 1.コメント項目の追加
add_filter( 'comment_form_defaults','change_comment_form_input');
function change_comment_form_input($default) {
     ///////入力項目のカスタマイズ(名前のあとにつづく)

     ////タイトル
     $default['fields']['email'] .= '<p class="comment-form-author commentForm-title">
     <label for="commentTitle">'. __('タイトル') . '</label>
     <input type="text" name="commentTitle" value="" placeholder="この商品についてひとこと" />
     </p>';

     ////性別
     $default['fields']['email'] .= '<p class="comment-form-author">
     <label for="imMan"><input type="radio" name="sex" value="男性" id="imMan" />'. __('男性') . '</label>
     <label for="imWoman"><input type="radio" name="sex" value="女性" id="imWoman" />'. __('女性') . '</label>
     </p>';

     ////年齢層
     $default['fields']['email'] .= '<p class="commentForm-age">
     <label for="teen"><input type="radio" name="commenterAge" value="10代" id="teen" />'. __('10代') . '</label>
     <label for="teen2"><input type="radio" name="commenterAge" value="20代" id="teen2" />'. __('20代') . '</label>
     <label for="teen3"><input type="radio" name="commenterAge" value="30代" id="teen3" />'. __('30代') . '</label>
     <label for="teen4"><input type="radio" name="commenterAge" value="40代" id="teen4" />'. __('40代') . '</label>
     <label for="teen5"><input type="radio" name="commenterAge" value="50代" id="teen5" />'. __('50代') . '</label>
     </p>';

     return $default;
}
// 2 ちゃんとデータベースに入れる
///////データ更新
////性別
add_action( 'comment_post', 'save_comment_meta_data_sex' );
function save_comment_meta_data_sex( $comment_id ) {
$sex = $_POST['sex'];
return update_comment_meta( $comment_id, 'sex', $sex, true);
}
///タイトル
add_action( 'comment_post', 'save_comment_meta_data_title' );
function save_comment_meta_data_title( $comment_id ) {
$commentTitle = trim($_POST['commentTitle']);
return update_comment_meta( $comment_id, 'commentTitle', $commentTitle, true);
}
////年齢層
add_action( 'comment_post', 'save_comment_meta_data_age' );
function save_comment_meta_data_age( $comment_id ) {
$commenterAge = $_POST['commenterAge'];
return update_comment_meta( $comment_id, 'commenterAge', $commenterAge, true);
}

wp_commentmetaに保存された内容を出力

  <h2>レビュー</h2>
    <?php if(have_comments()): ?>
      <ul>
        <?php
          $comments = get_comments(array(
            'status' => 'approve',
            'number' => 4  //四件表示
          ));
          foreach ($comments as $comment) { ?>
          <li>
            <h3><?php the_title(); ?></h3>
            <p><?php comment_author(); ?>
             - 年齢:<?php echo get_comment_meta( $comment->comment_ID, 'commenterAge' ,true ); ?>
             - 性別:<?php echo get_comment_meta( $comment->comment_ID, 'sex' ,true ); ?>
             - タイトル:<?php echo get_comment_meta( $comment->comment_ID, 'commentTitle' ,true ); ?>
            </p>
            <p><?php echo mb_substr(get_comment_excerpt(), 0, 30); ?></p>
            <a href="#">続きを読む</a>
          </li>
        <?php };?>
      </ul>
    <?php else : ?>
      <p>まだ投稿されていません。</p>
    <?php endif; ?>
    </div>

    <?php comment_form(); ?>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/04 21:53

    この館→このやり方
    誤字です、すいません。

    タイプは「在学生」「卒業生」「保護者」という属性です。

    載せてくださったサイトを参考にし、作ってみましたが表示はされませんでした。
    おそらく最後の表示のところだけがうまくいっていないのだと思います。

    その理由としては
    comments.phpにはwp list commentを使って表示しておらず
    comment_author();
    mb_substr(get_comment_excerpt(), 0, 30);
    で名前と本文を30文字だけ表示させています。

    この場合はどのようにcomments.phpにかけばいいのでしょうか?

    キャンセル

  • 2017/10/05 08:52 編集

    回答修正しました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    17738questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    5978questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。