サポート » 使い方全般 » コメント時の「あなたのコメントは承認待ちです」が出ない

  • 解決済 takeshi29

    (@takeshi29)


    質問宜しくお願いします。

    コメントをした時に、メールアドレスを入力すると普通に「あなたのコメントは承認待ちです」と表示され、承認待ちのコメントにジャンプするのですが、メールアドレスを入力しなかった場合はコメントが承認待ちになってるにも関わらず、コメント投稿者には何も表示されません。

    その時、ジャンプリンク
    /#comment-××××
    は、表示されてますが、肝心の承認待ちのコメントが表示されません。

    よって、コメント投稿者が投稿完了したのかどうかがわからなくなってしまう状態です。

    サイトはこちらです。
    http://2-9densetsu.com
    http://29mailmaga.com

    エラーかバグではないかと思い、ワードプレスを更新しても入れ直しましたが解決しない状況です。

    メールアドレスを入れなかった場合は強制的に仮のメールアドレスを入れる方法も考えましたが、

    http://www.starlod.net/wordpress-comment-any-mailaddress.html
    それでは、すでに承認されたコメントの投稿者のコメントを許可し、それ以外のコメントを承認待ちにする
    が使えなくなってしまいます。

    すでに承認されたコメントの投稿者のコメントを許可し、なおかつメールアドレスを入れないでも、「あなたのコメントは承認待ちです」を表示させたいといった目的です。

    ちなみに 名前とメールアドレスの入力を必須にする にはチェックは現在入れていない状態です。

    もし、原因がわかる方、もしくは対処法がわかるいらっしゃったらご教授お願いいたします。

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • メールアドレスを入れないコメントは、後からサイトを訪れたときに、自分のコメントかどうか確かめようがないと思いますよ。

    トピック投稿者 takeshi29

    (@takeshi29)

    > gblsm さん

    コメントありがとうございます。

    cookieが効いている限り、メールアドレスを入れなくても承認待ちは表示されるのではないでしょうか?

    もしそうでなかったとしても、コメントをした時にだけ「あなたのコメントは承認待ちです」と表示されれば問題はありません。

    メールアドレスを入れないと「あなたのコメントは承認待ちです」は表示されないのでしょうか?

    すでに承認されたコメントの投稿者のコメントを許可し、

    WordPressが同じコメント投稿者だと判断する条件は「投稿者名とメールアドレスの両方が一致する」です。cookieは使っていません。

    トピック投稿者 takeshi29

    (@takeshi29)

    > gblsm さん

    すでにコメントを許可したコメントについては問題ないです。

    問題はその前の承認する以前の段階で、投稿者がコメントした時に「あなたのコメントは承認待ちです」と表示されないといった点というわけです。

    「あなたのコメントは承認待ちです」の表示については、メールアドレスを入れなくても表示されると思うのですが、自分のブログには表示されないといった事です。

    「あなたのコメントは承認待ちです」の表示については、メールアドレスを入れなくても表示されると思うのですが、自分のブログには表示されないといった事です。

    原因を調べて書いたつもりなんですが。。。

    ごめんなさい、確認不足でした。cookieは使われていますが、テーマがコメント一覧を表示するときにテンプレートタグ comments_template を使っているなら、「ログインしていないコメント投稿者の未承認コメント」を表示する条件は以下のとおりです。

    • メールアドレスが空文字列ではない、かつ
    • 直前にコメント入力フォームを送信したときのメールアドレス(cookieに保存されます)と、未承認コメントのメールアドレスが一致する

    テンプレートタグ comments_template は、WordPress本体の wp-includes/comment-template.php の中にあり、下記のようなコードが使われています。

    /*
    	 * Comment author information fetched from the comment cookies.
    	 */
    	$commenter = wp_get_current_commenter();
    
    // 中略
    
    	/*
    	 * The email address of the current comment author escaped for use in attributes.
    	 * Escaped by sanitize_comment_cookies().
    	 */
    	$comment_author_email = $commenter['comment_author_email'];
    
    // 中略
    
    	if ( $user_ID ) {
    		$comment_args['include_unapproved'] = array( $user_ID );
    	} elseif ( ! empty( $comment_author_email ) ) {
    		$comment_args['include_unapproved'] = array( $comment_author_email );
    	}
    
    	$comments = get_comments( $comment_args );

    こんにちは、

    間違っていましたので、全文訂正

    functions.php

    function validate_message( $approved , $commentdata ){
    	if( empty( $commentdata['comment_author_email'] ) ) {
    
    		wp_die( '<p>メール書いてないので、ちょっと待ってね</p>' );
    	}
    
    }
    add_filter( 'pre_comment_approved' , 'validate_message' , '99', 2 );

    で、どうでしょうか?

    訂正の訂正

    function validate_message( $approved , $commentdata ){
    	if( empty( $commentdata['comment_author_email'] ) ) {
    
    		wp_die( '<p>メール書いてないので、ちょっと待ってね</p>' );
    	}
    return $approved;
    
    }
    add_filter( 'pre_comment_approved' , 'validate_message' , '99', 2 );

    トピック投稿者 takeshi29

    (@takeshi29)

    > gblsm さん

    どうもありがとうございます。

    なるほど、comments_templateを使ってる時点で、メールアドレスを何かしら入れないと承認待ちコメントは表示されないわけですね。

    ちょっと対応策を考えてみます…。

    トピック投稿者 takeshi29

    (@takeshi29)

    > notia さん

    コメントありがとうございます。

    メールアドレスが無かった場合にエラーを出すという事でしょうか?

    基本的にはメールアドレスを必須項目にはしないようにしようと思ってます。

    コメント一覧を取得する関数 get_comments の中にアクションフック pre_get_comments があり、pre_get_posts フックみたいに使えるそうです。もしかすると利用できるかも(調べていませんが)。
    Reference / Hooks / WP_Comment_Query::get_comments / pre_get_comments

    基本的にはメールアドレスを必須項目にはしないようにしようと思ってます。

    あくまで推定ですが、

    たぶん、ご使用になっているテーマでは、

    add_theme_support( 'html5', array(
    		'search-form', 'comment-form', 'comment-list', 'gallery', 'caption'
    	) );

    のような指定がされていなくて、html4形式でのコメントフォームが使われていると思います。

    なので、必須項目を未記入でもエラーが表示されていないんじゃないかと想像しています。

    なんで、エラー表示として表示したのかというと、

    4.3にアップデートした場合、上記のhtml5サポートをしていない状態でも、

    ERROR: please fill the required fields (name, email).

    としてはじかれるようになるためです。

    tested 4.3-alpha-32711 + Twentyfifteen

    line115 add_theme_support(…)をコメントアウトした状態で、フォーム入力をチェックして確認(ちょっとしかテストしていないので、確認してみてください)

    いろいろやり方は、あると思いますが、その辺りも視野に入れて頑張ってください

    トピック投稿者 takeshi29

    (@takeshi29)

    > nobita さん

    返信ありがとうございます。

    何もいじってない他のテーマ(ワードプレス公式テーマ)などを使ってみも、インストールしたばかりのワードプレスでも同様の事が起こってます。

    メールアドレスを入力しないと、承認待ちのコメントが出ない状況です…。

    皆さん色々とご提案ありがとうございます。

    現在の所、原因が掴めないですが、もうちょっと頑張ってみます。

    もしくは、メールアドレスを入れなかった人に対して、
    「コメントありがとうございます。 現在承認中です」
    なるコメントを出せれば…と考えて色々調べてます…。

    takeshi29さん、「メールアドレスを入力しないと、承認待ちのコメントが出ない」原因は、WordPressのテンプレートタグ comments_template がそういう仕様だからです。(少なくともコードを確かめた結果からは、そうだと思います)

    対策は、comments_template の代わりをする関数を自作して、それをテーマで使えばよいと思います。関数 get_comments は承認待ちのコメントも取得できるので。

    トピック投稿者 takeshi29

    (@takeshi29)

    > gblsm さん

    ありがとうございます!

    comments_templateをなんとかカスタマイズしてみて頑張ってみます!

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • トピック「コメント時の「あなたのコメントは承認待ちです」が出ない」には新たに返信することはできません。