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

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

このトピックには12件の返信が含まれ、2人の参加者がいます。4 ヶ月、 3 週間前 masa さんが最後の更新を行いました。

  • 投稿者
    投稿
  • #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

    わいひら様

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

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

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

返信先: 既存のコメント欄に、入力欄を追加したり修正したいです
あなたの情報:




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