WordPressのコメント欄に関する質問です(2)

このQ&Aのポイント
  • コメントのURLを必須にする方法をを調査しています。
  • 名前とメールアドレスは必須ですが、URLを必須にするにはどのような記述にすればいいのでしょうか?
  • URLを入力しなくてもすんなり投稿されてしまいます。URLもメールと同じように必須にするには他にどこを見ればいいのでしょうか?
回答を見る
  • ベストアンサー

WordPressの コメント欄 に関する質問です(2)

WordPressの コメント欄 に関する質問です(2) コメントのURLを必須にする方法をを調査しています 名前 aaaaaaaaaaaaaaaaaaaa メールアドレス bbbbbbbbbbbbbbbbb URL  cccccccccccc を入力する箇所が下記にあります 名前とメールアドレスは必須ですが、 URLを必須にするにはどのような記述にすればいいのでしょうか? 元になる全文はこちらです http://44fsdfa.blogspot.com/p/blog-page.html 下記のように 変更しましたが、URLを入力しなくてもすんなり投稿されてしまいます URLもメールと同じように必須にするには 他にどこを見ればいいのでしょうか? -------------------------------------- <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php if ( is_user_logged_in() ) : ?> <p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php _e('Log out of this account', 'kubrick'); ?>"><?php _e('Log out &raquo;', 'kubrick'); ?></a></p> <?php else : ?> <p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><?php _e('aaaaaaaaaaaaaaaa', 'kubrick'); ?> <?php if ($req) _e("(公開)", "kubrick"); ?></label></p> <p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="email"><?php _e('bbbbbbbbbbbbbbbb (必須)', 'kubrick'); ?> <?php if ($req) _e("(非公開)", "kubrick"); ?></label></p> <p><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="3" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><?php _e('ccccccccccccccccc', 'kubrick'); ?> <?php if ($req) _e("(公開)", "kubrick"); ?></label></p> <?php endif; ?>

  • PHP
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

他にもっとスマートなやり方があるかもしれませんが、 wp-comments-post.php(インストールディレクトリに存在) の69行目あたりで入力のチェックをしています。この辺に、$comment_author_url のチェックを追加。 if ( get_option('require_name_email') && !$user->ID ) { if ( 6 > strlen($comment_author_email) || '' == $comment_author ) wp_die( __('Error: please fill the required fields (name, email).') ); elseif ( !is_email($comment_author_email)) wp_die( __('Error: please enter a valid email address.') ); }    ▼▼▼ $pattern = '#(^|[^\"\'=\]])(http|HTTP|ftp)(s|S)?://((([^\s<>\.]+)\.)+[^\s<>\.]+)#sm'; if ( get_option('require_name_email') && !$user->ID ) { if ( 6 > strlen($comment_author_email) || '' == $comment_author || '' == $comment_author_url) wp_die( __('エラー: 必須項目 (お名前、メールアドレス、URL) を入力してください。') ); elseif ( !is_email($comment_author_email)) wp_die( __('Error: please enter a valid email address.') ); elseif ( !preg_match($pattern,$comment_author_url)) wp_die( __('エラー: 有効なURLを入力してください。') ); } (注意) ・本来は、翻訳ファイルを修正すべきですが、めんどうなので日本語を直接書いてutf-8(BOMなし)で保存。 ・URLの正規表現は、参考URLから拝借。

参考URL:
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1410291879
54afda4dfs
質問者

お礼

早速、ありがとうございます。後ほど試して見ます

関連するQ&A

  • WordPressの コメント欄 に関する質問です

    WordPressの コメント欄 に関する質問です コメントのURLを必須にする方法をを調査しています 名前 aaaaaaaaaaaaaaaaaaaa メールアドレス bbbbbbbbbbbbbbbbb URL  cccccccccccc を入力する箇所が下記にあります 名前とメールアドレスは必須ですが、 URLを必須にするには どのような記述にすればいいのでしょうか? -------------------------------------- <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php if ( is_user_logged_in() ) : ?> <p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php _e('Log out of this account', 'kubrick'); ?>"><?php _e('Log out &raquo;', 'kubrick'); ?></a></p> <?php else : ?> <p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><?php _e('aaaaaaaaaaaaaaaa', 'kubrick'); ?> <?php if ($req) _e("(公開)", "kubrick"); ?></label></p> <p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="email"><?php _e('bbbbbbbbbbbbbbbb (必須)', 'kubrick'); ?> <?php if ($req) _e("(非公開)", "kubrick"); ?></label></p> <p><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" /> <label for="url"><?php _e('cccccccccccccccc', 'kubrick'); ?><?php if ($req) _e("(公開)", "kubrick"); ?></label></p> <?php endif; ?> ----------------------------- 全文はこちらです http://44fsdfa.blogspot.com/p/blog-page.html

    • ベストアンサー
    • PHP
  • Wordpressのコメント欄受付・表示について。

    WordPress 2.8.6で構築 現在全てのブログでコメント受付が非表示になっていますが、その中の1つのカテゴリのブログだけでコメント欄を表示させるのが目的です。 phpの知識が追い付かずネットでも解決方法が見つけられず、以下のcomments.phpを修正してカテゴリの設定を変更するイメージでしたが理解が追い付きません。 どなたかお詳しい方いらっしゃいますでしょうか? <?php // Do not delete these lines if (isset($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) die ('Please do not load this page directly. Thanks!'); if ( post_password_required() ) { ?> <p class="nocomments"><?php _e('This post is password protected. Enter the password to view comments.', 'kubrick'); ?></p> <?php return; } ?> <!-- You can start editing here. --> <?php if ( have_comments() ) : ?> <h3 id="comments"><?php comments_number(__('No Responses', 'kubrick'), __('One Response', 'kubrick'), __('% Responses', 'kubrick'));?> <?php printf(__('to “%s”', 'kubrick'), the_title('', '', false)); ?></h3> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <ol class="commentlist"> <?php wp_list_comments();?> </ol> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <?php else : // this is displayed if there are no comments so far ?> <?php if ( comments_open() ) : ?> <!-- If comments are open, but there are no comments. --> <?php else : // comments are closed ?> <!-- If comments are closed. --> <p class="nocomments"><?php _e('Comments are closed.', 'kubrick'); ?></p> <?php endif; ?> <?php endif; ?> <?php if ( comments_open() ) : ?> <div id="respond"> <h3><?php comment_form_title( __('Leave a Reply', 'kubrick'), __('Leave a Reply for %s' , 'kubrick') ); ?></h3> <div id="cancel-comment-reply"> <small><?php cancel_comment_reply_link() ?></small> </div> <?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?> <p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'kubrick'), wp_login_url( get_permalink() )); ?></p> <?php else : ?> <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php if ( is_user_logged_in() ) : ?> <p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php _e('Log out of this account', 'kubrick'); ?>"><?php _e('Log out &raquo;', 'kubrick'); ?></a></p> <?php else : ?> <p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><small><?php _e('Name', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p> <p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="email"><small><?php _e('Mail (will not be published)', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p> <p><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" /> <label for="url"><small><?php _e('Website', 'kubrick'); ?></small></label></p> <?php endif; ?> <!--<p><small><?php printf(__('<strong>XHTML:</strong> You can use these tags: <code>%s</code>', 'kubrick'), allowed_tags()); ?></small></p>--> <p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p> <p><input name="submit" type="submit" id="submit" tabindex="5" value="<?php _e('Submit Comment', 'kubrick'); ?>" /> <?php comment_id_fields(); ?> </p> <?php do_action('comment_form', $post->ID); ?> </form> <?php endif; // If registration required and not logged in ?> </div> <?php endif; // if you delete this the sky will fall on your head ?>

    • ベストアンサー
    • PHP
  • phpコードを解説して欲しいです。$str 多く困

    $str = '<h3 id="trackbacks">Trackback</h3>'; $str .= '<ol class="trackback-list" id="custom-trackback">'; $i = 0; foreach ( $comments as $comment ) { if ( get_comment_type() != 'comment' ) { $str .= '<li class="clearfix" id="comment-' . get_comment_ID() . '">'; $str .= '<div class="trackback-author">'; $str .= '<p class="comment-author-name">'; $comment_author_url = $comment->comment_author_url; $comment_author = $comment->comment_author; if ( $comment_author_url ) { $str .= '<a href="' . esc_url( $comment_author_url ) . '" target="_blank" title="' . esc_attr( $comment_author ) . '">'; $str .= esc_html( $comment_author ); $str .= '</a>'; } else { $str .= esc_html( $comment_author ); } $str .= '</p>'; $str .= '<p class="comment-meta">' . '<a href="' . esc_url( get_comment_link( $comment->comment_ID ) ) . '">' . get_comment_date() .'<span>'. get_comment_time() . '</span><a class="edit" href="' . get_edit_comment_link() . '">(編集)</a></span></p>'; $str .='</div>'; $str .= '<div class="trackback-body">'; if ( $comment->comment_approved == '0' ) { $str .= '<p class="attention"><em>あなたのトラックバックは承認待ちです。</em></p>'; } $str .= '<p>' . esc_html( get_comment_text() ) . '</p>'; $str .= '</div>'; $str .= '</li>'; $i++; } } $str .= '</ol>'; if ( $i > 0 ) { echo $str;

    • 締切済み
    • PHP
  • MT コメントフォームのテキストエリアの『横幅』を変更したい

    ブログテンプレートをデフォルトを元に編集しています。 エントリーテンプレートを編集しているときに気づいたのですが、コメントフォームのテキストエリアの横幅の値を変えても、ある幅までにしか縮みません。もしかしたら編集する場所が間違っているかもしれませんが、お助け願います。 ついでに編集したあとのコメントフォームの例です。 <label for="comment-author">名前:</label> <input id="comment-author" name="author" size="20" /> <p id="comments-open-text"> <label for="comment-text">コメント: <MTIfAllowCommentHTML>(スタイル用のHTMLタグが使えます)</MTIfAllowCommentHTML></label> <textarea id="comment-text" name="text" rows="5" cols="40"></textarea> </p>

  • WordPressの質問(q10006002)の続

    前後の記事のコメント欄を標示する方法がわかりません。 <?php $team = get_post_meta($post->ID, 'team', true);//赤、青、緑のチームに分ける // 投稿オブジェクトの取得 if ('red' === $team) { $post_red = $post; // 赤(現在) $post_blue = get_adjacent_post(true, '', false); // 青(現在の次) $post = $post_blue; // 現在を青に置きかえる $post_green = get_adjacent_post(true, '', false); // 緑(現在の次:青の次) $post = $post_red; // 現在を赤に戻す } elseif ('blue' === $team) { $post_blue = $post; // 青(現在) $post_red = get_adjacent_post(true, '', true); // 赤(現在の前) $post_green = get_adjacent_post(true, '', false); // 緑(現在の次) } elseif ('green' === $team) { $post_green = $post; // 緑(現在) $post_blue = get_adjacent_post(true, '', true); // 青(現在の前) $post = $post_blue; // 現在を青に置きかえる $post_red = get_adjacent_post(true, '', true); // 赤(現在の前:青の前) $post = $post_green; // 現在を緑に戻す } /*$post_thumbnail_id = get_post_thumbnail_id($post);//画像の投稿データから画像IDを取得する ※おそらくいらない */ $red_post_thumbnail_id = get_post_thumbnail_id($post_red);//赤、青、緑の投稿データから前後の画像IDを取得する $blue_post_thumbnail_id = get_post_thumbnail_id($post_blue); $green_post_thumbnail_id = get_post_thumbnail_id($post_green); $red_post_image_src = wp_get_attachment_image_src($red_post_thumbnail_id);//赤、青、緑の投稿データから前後の画像URLを取得する $blue_post_image_src = wp_get_attachment_image_src($blue_post_thumbnail_id); $green_post_image_src = wp_get_attachment_image_src($green_post_thumbnail_id); /*$post_id = post_id ($post_red,$post_blue,$post_green);*/ ※$argsで設定済みなので多分必要ない // コメントオブジェクトの取得 $args = [ 'author__not_in' => '1', // 管理者を除く 'status' => 'approve', // 承認済み 'type' => 'comment', // コメント ]; $args['post_id'] = $post_red->ID; // 赤のID $comments_red = get_comments($args); // 赤のコメント $args['post_id'] = $post_blue->ID; // 青のID $comments_blue = get_comments($args); // 青のコメント $args['post_id'] = $post_green->ID; // 緑のID $comments_green = get_comments($args); // 緑のコメント // コメントの表示 if (empty($comments_red)) { echo '<p>コメントなし</p>'; } else { echo '<ul>'; foreach ($comments_red as $comment) { echo "<li>{$comment->comment_content}</li>"; } echo '</ul>'; } if (empty($comments_blue)) { echo '<p>コメントなし</p>'; } else { echo '<ul>'; foreach ($comments_blue as $comment) { echo "<li>{$comment->comment_content}</li>"; } echo '</ul>'; } if (empty($comments_green)) { echo '<p>コメントなし</p>'; } else { echo '<ul>'; foreach ($comments_green as $comment) { echo "<li>{$comment->comment_content}</li>"; } echo '</ul>'; }

    • ベストアンサー
    • PHP
  • WordPressのコメント数表示を消したい

    初めてWordPressを設置しました。 こちら(http://www.jepson.no/polaroidpress-a-free-wordpress-theme/)の PolaroidPressというテーマを使用したいと思っています。 ところが、コメントを受け付けない設定にしていると、 記事タイトル右横にあるコメント数表示部分(ふきだしに数字が書いてあります)に 思いっきり「コメントは受け付けていません」と表示されてしまいます。 場所が場所だけに非常に目立つので、表示されないようにしたいのですが、可能でしょうか? ・補足1 私はHTMLとCSSはわかりますが、PHPについてはまったくの初心者です。 WordPress自体についても触り始めたばかりです。 ・補足2 ふきだしの画像はCSSをいじって消すことができました。 ・補足3 comments.php内の  <?php if ('open' == $post->comment_status) : ?>    <!-- If comments are open, but there are no comments. -->   <?php else : // comments are closed ?>    <!-- If comments are closed.    <p class="nocomments">Kommentarer er lukket.</p>    -->   <?php endif; ?>  <?php endif; ?> という部分かと思ったのですが、いじっても特に何も変わりませんでした。 恐らく初歩的な質問で申し訳ありません。 よろしくお願いいたします。

  • PHP+MySQLで複数配列の挿入(INSERT)

    こんにちは。PHPの初心者です。MySQLで一つの配列を読む方法はわかっていますが、複数の配列をテーブルに入れる方法がわかりません。どなたかわかる方がいらっしゃったら教えてください。 $sql01 = "INSERT INTO $table01 (comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_karma, comment_approved, comment_agent, comment_type, comment_parent, user_id, comment_subscribe) VALUES ('1069','online post dated check cashing','Tim','Hello','221.120.211.2','2008-09-23 06:43:43','2008-09-23 14:43:43','Yay','0','spam','Hello','trackback','0','0','N')"; 以上のように$table01というテーブルに特定のデータを挿入することができます。データベースは$database_my_juliaです。もう既に$database_my_meggyというデータで以下のようにデータを$sqlに保持しています。このような複数の配列を上記のように他のデータベースのテーブルに挿入することはできるでしょうか? $sql = "select comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date comment_date_gmt, comment_content, comment_karma, comment_approved, comment_agent, comment_type, comment_parent, user_id, comment_subscribe from $table00 WHERE comment_approved != '1'"; $result_my_meggy = mysql_query($sql,$my_meggy); 宜しくお願いします。

  • wordpressのStyle設定について

    お世話になります。 仕事でwordpressを使うことになりテンプレートの作成を行なっています。 ヘッダーにログインフォームを付けたく「<?php wp_login_form( ); ?>」を使いログインフォームを表示させることはできました。 下記、ログインフォームのソースの抜粋になります。 <form name="loginform" id="loginform" action="***" method="post"> <p class="login-username"> <label for="user_login">ユーザー名</label> <input type="text" name="log" id="user_login" class="input" value="" size="20" tabindex="10" /> </p> <p class="login-password"> <label for="user_pass">パスワード</label> <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" tabindex="20" /> </p> <p class="login-submit"> <input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="ログイン" tabindex="100" /> <input type="hidden" name="redirect_to" value="***" /> </p> </form></p> こんなかんじで表示させることはできたのですが、 この状態だと、自動的に<p>タグがはいってしまい改行されます。 この部分を横一行 ユーザ名[ ] パスワード[ ] [ログイン] のようにシたいのですがどのようにStyleをつけたらいいか悩んでます。 よろしければ、ご回答ください。

    • ベストアンサー
    • CSS
  • phpのメール送信での質問になります

    メールとお問い合わせ内容は届くのですが、名前とアドレスが届かないので間違っている箇所を教えていただけるとありがたいです。 以下コードになります。 html <body> <main> <section> <h2>お問合せ内容の確認</h2> <form action="mailto.php" method="post"> <div class="contant-area"> <div class="label-container"> <label class="item intem-name">名前</label> <label class="item item-email">メールアドレス</label> <label class="item item-message">問い合わせ内容</label> </div> <div class="text"> <p class="item-post" name="name"><?php echo $_POST["name"]; ?></p> <p class="item-post" name="email"><?php echo $_POST["email"]; ?></p> <textarea class="item-post item-textarea" name="message"><?php echo $_POST["message"]; ?></textarea> </div> </div> <div class="button-area"> <input type="submit" value="送信"> </div> </form> </section> </main> </body> php <?php // フォームデータの取得 $name = $_POST[&#039;name&#039;]; $email = $_POST[&#039;email&#039;]; $message = $_POST[&#039;message&#039;]; // 送信先のメールアドレス $to = &#039;*****@gmail.com&#039;; // 件名 $subject = &#039;お問い合わせがありました&#039;; // メール本文 $body = "名前: $name\n"; $body .= "メールアドレス: $email\n"; $body .= "問い合わせ内容:\n$message"; // 送信元のメールアドレスと名前 $from = &#039;*****1690.xsrv.jp&#039;; $fromName = &#039;お問い合わせフォーム&#039;; // ヘッダー $headers = "From: $fromName <$from>"; // メール送信 $mailResult = mail($to, $subject, $body, $headers); ?>

    • ベストアンサー
    • PHP
  • htmlとphpのデータ受け渡し???

    いつもお世話になり誠にありがとうございます。 標記の件。 まだ、ボク自身、解っていないようです。 htmlとphpのソースコードを提示します。 どうすればデータの受け渡しができるか? 添削してくださらないでしょうか? html <!--入力画面--> <form action = "./Blog.php" method = "get"> <label class="label" for="name">お名前(ニックネーム)</label> <center><input id="name" type="text" name="name"></center> <label class="label" for="e-mail">メール</label> <input id="e-mail" type="e-mail" name="e-mail"> <label class="label" for="category">カテゴリー</label> <input id="category" type="category" name="categoryl"> <label class="label" for="message">本文</label> <textarea name="area1" style="color:rgb(8, 8, 8); font-size:100%;" cols="50" rows="30"></textarea><br> <input type="submit" name="confiem" value="確認"> </form> CSS <meta charset="utf-8"> <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['e-mail'] = $_POST['e-mail']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['e-mail'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!--確認画面--> <?php if( $mode == 'input' ){ ?> お名前(ニックネーム)<?php echo $_POST['name'] ?><br> Eメール<?php echo $_POST['e-mail'] ?><br> カテゴリー<?php echo $_POST['category'] ?><br> 本文<br> <?php echo nl2br($_POST['message']) ?><br> <input type="submit" name="back" value="戻る" /> <input type="submit" name="send" value="送信" /> <?php } else { ?> <!--完了画面--> <?php } ?> 上記の通りです。 全然ダメだと思います。 添削のほど、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP

専門家に質問してみよう