既存のコメント欄に、入力欄を追加したり修正したいです

Simplicityの特徴 フォーラム Simplicityについての質問 既存のコメント欄に、入力欄を追加したり修正したいです

  • このトピックには12件の返信、2人の参加者があり、最後にmasaにより3年、 9ヶ月前に更新されました。
12件の返信スレッドを表示中
  • 投稿者
    投稿
    • #42196 返信
      ゆう
      ゲスト

      お世話になっております。
      シンプリシティ、非常に使いやすくて気に入っております。

      恐れ入りますが、コメント欄の修正について質問させて下さい。

      私が運営しているサイトの「会い会い傘」という投稿ページがあります。
      http://one-brella.net/archives/1818

      このページのコメント欄について、

      新しい入力欄を設けて、表示も変えたいです。

      メールアドレス
      ウェブサイト  … は自分で非表示に出来るので大丈夫です。

      ◆【新しい入力欄】は、

      コメントをどうぞ
      名前 (傘を渡す人)
      名前 (傘を受け取った人)
      撮影した都道府県

      上記のようにしたいです。

      ◆何かコメントを入力した際の、【表示】は、

      1.名前:匿名 投稿日:2016/06/10(金) 16:40:19

      ↓  これを

      1.投稿日:2016/06/10(金) 16:40:19
      名前 (傘を渡す人):
      名前 (傘を受け取った人):
      撮影した都道府県:

      このように、複数段に渡り表示されるようにしたいです。

      なにぶん素人なもので、どのファイルをどのように
      修正したら良いのか分かりません。

      お手数ですが、宜しくお願い致します。

    • #42206 返信
      わいひらわいひら
      キーマスター

      コメントフォームの変更は、以下の記事を参考にしてみてください。
      WordPress:コメントフォームをカスタマイズする方法 | NxWorld

      スレッドコメントの表示については、子テーマに、以下の関数を貼り付けて、中の文字列を好みのものに変更してください。

      function thread_comment($comment, $args, $depth) {
          $GLOBALS['comment'] = $comment; ?>
          <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
          <div id="comment-<?php comment_ID(); ?>">
          <div class="comment-listCon">
              <div class="comment-info">
                  <?php echo get_avatar( $comment, 48 );//アバター画像 ?>
                  <?php printf('<span class="admin">名前:<cite class="fn comment-author">%s</cite></span> ', get_comment_author_link()); //投稿者の設定 ?>
                  <span class="comment-datetime">投稿日:<?php printf('%1$s %2$s', get_comment_date('Y/m/d(D)'),  get_comment_time('H:i:s')); //投稿日の設定 ?></span>
                  <span class="comment-id">
                  ID:<?php //IDっぽい文字列の表示(あくまでIDっぽいものです。)
                      $ip01 = get_comment_author_IP(); //書き込んだユーザーのIPアドレスを取得
                      $ip02 = get_comment_date('jn'); //今日の日付
                      $ip03 = ip2long($ip01); //IPアドレスの数値化
                      $ip04 = ($ip02) * ($ip03); //ip02とip03を掛け合わせる
                      echo mb_substr(sha1($ip04), 2, 9); //sha1でハッシュ化、頭から9文字まで出力
                      //echo mb_substr(base64_encode($ip04), 2, 9); //base64でエンコード、頭から9文字まで出力
                  ?>
                  </span>
                  <span class="comment-reply">
                    <?php comment_reply_link(array_merge( $args, array(
                      'depth'   =>$depth,
                      'max_depth' =>$args['max_depth']))) ?>
                  </span>
                  <span class="comment-edit"><?php edit_comment_link('編集','  ',''); //編集リンク ?></span>
              </div>
              <?php if ($comment->comment_approved == '0') : ?>
                  <em>あなたのコメントは現在承認待ちです。</em>
              <?php endif; ?>
              <div class="comment-text"></div>
              <?php comment_text(); //コメント本文 ?>
      
              <?php //返信機能は不要なので削除 ?>
          </div>
      </div>
      <?php
      }
    • #42225 返信
      ゆう
      ゲスト

      わいひら様、お世話になっております。

      早速の返信ありがとうございました。

      教えて頂きました、「コメントフォームをカスタマイズする方法」の
      【6. コメントフォームに項目を追加する】 
      に書いてある情報を使って、
      functions.php へソースを記述したら、
      新たな1項目(名前 傘を受け取った人)をコメント欄に追加できました。

      ですが、同じ要領でfunctions.phpへ
      2項目目(撮影した場所)を記述すると、画面が真っ白になるんです。
      ■■■■■■■■■■■■■■■■■■■■■■■■■■■■

      //コメント欄に名前の追加
      function add_comment_fields($fields) {
      	$fields['n2'] = '<p class="comment-form-n2"><label for="n2">' . __( '名前 (傘を受け取った人)' ) . '</label>' .
      	                  '<input id="n2" name="n2" type="text" size="30" /></p>';
      	return $fields;
      }
      add_filter('comment_form_default_fields', 'add_comment_fields');
      
      function add_comment_meta_values($comment_id) {
      	if(isset($_POST['n2'])) {
      		$n2 = wp_filter_nohtml_kses($_POST['n2']);
      		add_comment_meta($comment_id, 'n2', $n2, false);
      	}
      }
      add_action ('comment_post', 'add_comment_meta_values', 1);
      
      //コメント欄に撮影場所の追加
      function add_comment_fields($fields) {
      	$fields['basyo'] = '<p class="comment-form-basyo"><label for="basyo">' . __( '撮影した場所' ) . '</label>' .
      	                  '<input id="basyo" name="basyo" type="text" size="30" /></p>';
      	return $fields;
      }
      add_filter('comment_form_default_fields', 'add_comment_fields');
      
      function add_comment_meta_values($comment_id) {
      	if(isset($_POST['basyo'])) {
      		$basyo = wp_filter_nohtml_kses($_POST['basyo']);
      		add_comment_meta($comment_id, 'basyo', $basyo, false);
      	}
      }
      add_action ('comment_post', 'add_comment_meta_values', 1);

      ■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      何が原因でしょうか?

      わいひらさんに聞くのは筋違いかもしれませんが
      何卒、お力を貸して頂ければと存じます。

    • #42253 返信
      わいひらわいひら
      キーマスター

      画面が真っ白になるということは、何処かしらにコードのエラーがあると思います。
      WordPressのデバッグモードなどの設定をして、エラーメッセージを表示させてエラーを修正してください。
      ただ、PHPコードの不具合は、サポート対象外のものにあるように、こちらから原因箇所は見れないのでできれば自前で解決していただければと思います。

    • #42261 返信
      Hidekichi
      ゲスト

      ちらっと見た感じ、

      __( ‘名前 (傘を受け取った人)’ )

      こういうやつは、国際化(ローカライズ?)するためのもので、
      __("file")
      こうなってると、それは「ファイル」と翻訳されます。つまり、ここは普通に

      '名前(傘を受け取った人)'
      としておけばよいのではないかと。また、
      $file = __("file");
      このように変数に入れて使い、

      $massage = "this ".$file." is .txt.";
      this ファイル is .txt

      とまぁちょっと無理矢理なサンプルですが、こういう具合になります。

      _e()なんてのもありますが、これはecho、つまりその場で翻訳された語句を出力するためのものです。

      で、正しく動かどうかはわかりませんが、

      function add_comment_fields($fields) {
      	$fields["n2"] = '<p class="comment-form-n2"><label for="n2">名前 (傘を受け取った人)</label><input id="n2" name="n2" type="text" size="30" /></p>';
      	$fields['basyo'] = '<p class="comment-form-basyo"><label for="basyo">撮影した場所</label><input id="basyo" name="basyo" type="text" size="30" /></p>';
      	return $fields;
      }
      add_filter('comment_form_default_fields', 'add_comment_fields');
      
      function add_comment_meta_values($comment_id) {
      	if(isset($_POST['basyo'])) {
      		$basyo = wp_filter_nohtml_kses($_POST['basyo']);
      		add_comment_meta($comment_id, 'basyo', $basyo, false);
      	}
      	if(isset($_POST['n2'])) {
      		$n2 = wp_filter_nohtml_kses($_POST['n2']);
      		add_comment_meta($comment_id, 'n2', $n2, false);
      	}
      }
      add_action ('comment_post', 'add_comment_meta_values', 1);

      こんな感じでどうかなと思ったり。

    • #42263 返信
      ゆう
      ゲスト

      わいひら様、Hidekichi様、お世話になっております。

      ◆Hidekichiさんのソースコードを functions.phpへ記述し、

      ◆表示については、
      lib-comment.phpの任意の箇所へ、

      <?php echo “名前 (傘を受け取った人): “.get_comment_meta( $comment->comment_ID, ‘n2’, true ); ?><br>
      <?php echo “傘を撮影した場所: “.get_comment_meta( $comment->comment_ID, ‘basyo’, true ); ?><br>

      と記述したら一発で解決しました!

      本当に有難うございました。

    • #44151 返信
      masa
      ゲスト

      コメント欄のカスタマイズでこちらにたどり着きました。

      やりたいことはシンプルに、

      コメント入力欄や名前入力欄の上部のテキストを
      「コメントをどうぞ」→任意のテキストに変更したい
      「名前」→「お名前」や「ニックネーム」、「ペンネーム」などサイトによって任意に変更したい

      という感じです。

      わいひらさん紹介の
       WordPress:コメントフォームをカスタマイズする方法 | NxWorld
      も読んでみたのですが、simplicity2の子テーマのどこをどう手を入れたらいいか分からず
      コメントさせていただきました。

      どうぞよろしくお願いいたします。

    • #44158 返信
      わいひらわいひら
      キーマスター

      設定状態によって、カスタマイズ方法は変わってくるので、設定状態を見るためコメント入力欄があるページのURLを掲載していただいていいですか?

    • #44159 返信
      masa
      ゲスト

      わいひらさん

      ありがとうございます。
      こちらになります。

      http://zeroangel-fan.yokohama/006/

      よろしくお願いいたします。

    • #44160 返信
      わいひらわいひら
      キーマスター

      デフォルトのコメントタイプなので、
      comments-default.phpファイルを子テーマ内にコピペして以下の部分を

      $args = array(
      	'title_reply' => get_theme_text_comment_reply_title(),//コメントをどうぞ
      	'label_submit' => get_theme_text_comment_submit_label(),//コメントを送信
      );

      以下のように変更すればいけるかと思います。

      $args = array(
        'title_reply' => get_theme_text_comment_reply_title(),//コメントをどうぞ
        'label_submit' => get_theme_text_comment_submit_label(),//コメントを送信
        'fields' => apply_filters( 'comment_form_default_fields', array(
      
          'author' =>
            '<p class="comment-form-author">' .
            '<label for="author">お名前</label> ' .
            ( $req ? '<span class="required">*</span>' : '' ) .
            '<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">メアド</label> ' .
            ( $req ? '<span class="required">*</span>' : '' ) .
            '<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">あなたのサイト</label>' .
            '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) .
            '" size="30" /></p>'
          )
        ),
      
      );

      ※メールアドレスや、サイトが不要なら削除してください。

      やり方はまんま以下に書かれている内容とほぼ同じです。
      WordPress:コメントフォームをカスタマイズする方法 | NxWorld
      関数リファレンス/comment form – WordPress Codex 日本語版

    • #44191 返信
      masa
      ゲスト

      わいひらさん

      > comments-default.phpファイルを子テーマ内にコピペして以下の部分を
       中略
      > 以下のように変更すればいけるかと思います。

      「comments-default.phpファイルを子テーマ内にコピペ」というのは、
      ファイルの中身(コード)のコピーという認識で良いと思ったのですが、
      FTP等で、ファイルを子テーマのフォルダにコピーという意味でしたか?

      コピペしたものは子テーマの functions.php へ貼り付け、で良かったと思うのですが、
      いかがでしょうか?

      一度やってみて、WPの管理画面にアクセスできなくなったので、改めて確認したく
      コメントさせていただきました。

      よろしくお願いいたします。

    • #44205 返信
      わいひらわいひら
      キーマスター

      書いてある通りに、ファイルをコピーします。
      ファイルをコピーする理由としては以下を参照してください。
      WordPressテーマのカスタマイズで子テーマを使うべき理由、使い方など

      ファイルを子テーマフォルダにコピーしたあと、それをエディターで開いて編集します。

    • #44888 返信
      masa
      ゲスト

      わいひら様

      お返事が遅くなり大変失礼しました。

      体調を崩しておりました。

      ファイルコピーということ、了解しました。
      試してみて、もしうまく行かなかった場合は、
      またご質問させていただきます故、
      よろしくお願いいたします。

12件の返信スレッドを表示中
返信先: 既存のコメント欄に、入力欄を追加したり修正したいです
あなたの情報:




スポンサーリンク
アドセンス(大)
アドセンス(大)