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

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

ただいまの
回答率

89.99%

【WordPress】承認待ちのコメントが掲載されてしまう

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,279

ShogoChicago

score 36

WordPressで口コミサイトを運営しています。
あるカテゴリーのページにはユーザーがコメントできるようになっており、コメントが投稿されると管理者が承認すれば掲載されるという設定にしています。

現在起きている問題

コメントが承認されていないのに、即時掲載されてしまうという問題が発生しています。
そのため、スパムのコメントが多く掲載されてしまっているという状況です。

WPのディスカッションの設定は以下のようになっています。
どの部分を修正すればよいか思い当たる方がおりましたら、アドバイスをお願い致します。
ディスカッションの設定

【追記】コード

【single.phpのコメント部分】
 <?php if ( has_category( 'service' )or has_category( 'popular' )): ?>
<!--------------CommentArea--------------->
<div class="col-full">
  <div class="wrap-col">
    <?php comments_template( ); ?>
  </div><!-- ^ .wrap-col END-->
</div><!-- ^ .col-full END-->

<!--------------CommentArea END--------------->
<?php endif; ?>
【comments.php】
<div id="comment_area">
    <div class="comment_post">

    <?php $args = array(
        'title_reply' => '口コミを投稿する',
       'label_submit' => '口コミを送信する',
        'fields' => array(
                'author' => '<p class="comment-form-author">' .
                            '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' placeholder="*お名前" /></p>',
                ),
        'comment_field' => '<p class="comment-form-comment">' . '<textarea id="comment" name="comment" cols="50" rows="6" aria-required="true"' . $aria_req . ' placeholder="*口コミの内容" /></textarea></p>',
        );
    comment_form( $args ); ?>
    </div>
    <div class="posted_comments">
    <?php if(have_comments()): ?>
    <h3 id="comments">投稿された口コミ</h3>
        <div class="comments-list">

<?php    $comments_per_page = 10;
    $comments = get_comments( array( 'status' => 'approve'  , 'post_id' => $post->ID) );
    ?>
        <?php wp_list_comments( array (
            'per_page' => $comments_per_page,
            'reverse_top_level' => false
        ), $comments ); ?>



        </div>
    <?php endif; ?>
    </div>
</div>


<?php if(get_comment_pages_count() > 1) : ?>
  <div>
    <?php previous_comments_link('次のコメント'); ?>
    <?php next_comments_link('前のコメント'); ?>
  </div>
<?php endif; ?>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2016/08/24 12:11

    コメント出力の部分のテンプレートになにか標準のもの以外を使用していませんか?

    キャンセル

  • bananacoffee

    2016/08/24 12:15

    それであればフロント側のコメントを取得・表示する部分のソースをお見せいただければ何か分かるかもしれませんが可能でしょうか。

    キャンセル

  • kei344

    2016/08/24 12:28

    質問タイトルに「こ」という一文字が混入していますので、修正お願いします。

    キャンセル

回答 3

checkベストアンサー

+4

 前準備

  • wp-config.phpに以下を記述
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', WP_DEBUG );
define( 'WP_DEBUG_LOG', WP_DEBUG );
  • 管理画面の新規プラグインインストールでDeveloperというプラグインをインストール
  1. Developerをインストールするとモーダルウィンドウが開くので"Theme for a self-hosted WordPress installation"を選択
  2. 次の画面で名前に"Debug Bar"と付くもの全部、Theme Checkをインストールし有効化

Developerというプラグインは、WordPressの開発に役立つプラグインを簡単インストールできるプラグインです。Developerというプラグイン自体には、それ以上の機能は無いので、用が済んだら削除して問題ありません。

Debug Barは、管理画面の画面上部のバーの右に"Debug"という項目が追加されます。エラーがあった際、このDebugという部分の色が変わりますので、色が変わった場合、修正しましょう。

Theme Checkは、テーマが正しく作られているかチェックできるプラグインです。自身のテーマをチェックさせると、色々問題が分かると思います。

 以下を試す

  1. 前準備でインストールしたプラグイン以外のプラグインを全部止める
  2. テーマを標準のテーマに切り替える

 1で問題が解消された場合

プラグインを1つずつ有効化し、どのプラグインが問題なのか特定。特定できたら、それが自身が作成したプラグインである場合、バグを修正。第三者が作ったプラグインの場合、バージョンアップを待つ、別のプラグインを探す、Githubなどでソースコードが公開されていて自身で原因特定と対処ができ、テストコードが書ける場合、作者にプルリクエストを送る(オープンソースへの貢献)。

 2で問題が解消された場合

  1. テーマを自作のテーマに戻す
  2. 自身のテーマのファイルはどこかにバックアップ
  3. functions.phpからコメントに関するカスタマイズのフックや関数をコメントアウト
  4. comments.phpとsingle.phpを標準テーマからコピーして自身のテーマに上書きし動作確認

 2-3で問題が解消された場合

どのカスタマイズが問題なのか特定しバグの修正

 2-4で問題が解消された場合

comments.phpとsingle.phpを1つづつ自身のテーマのモノに戻し、どっちが問題なのか特定。問題があった方を、標準テーマのソースコードをお手本に修正。

 終わりに

トライアンドエラーですが、ここまでやれば解消できると思います。これを繰り返すことで、その内知識が付いて行き、身体が覚え、解消できる迄の時間も短くなると思います。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/08/26 01:35

    ありがとうございます。
    すべてのプラグインを停止したところ、この問題は起こりませんでした。
    最新のものに更新しても同様に問題が解決していたので、どうやら古くなったプラグインが問題だったようです。
    初歩的なところでつまづいてしまい、申し訳ございません。

    WPの基本的な考え方を丁寧に解説してくださり、ありがとうございました。

    キャンセル

0

bananacoffeeさんが指摘のとおり、

一度ダッシュボードをログアウトして、ページを再表示してみたら、コメントが表示されていなかったということはないですか?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/08/24 11:59

    ありがとうございます。
    ログアウトしてコメントを投稿してみましたが、やはり即時掲載されてしまいました。

    キャンセル

0

$comments = get_comments( array( 'status' => 'approve'  , 'post_id' => $post->ID) );

この内容を確認してみて未承認のものが混ざっていたら、functions.php かプラグインでカスタマイズされてしまっている可能性が高いですね。

試しにこれに変えても変わらないでしょうか。

$comments = get_approved_comments($post->ID);

また、そもそもsingle.phpから呼び出されているのであれば get_comments も必要なく、これだけで行けるかもしれません。

<?php
wp_list_comments( array (
    'per_page' => $comments_per_page,
    'reverse_top_level' => false
) ); 
?>

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/08/24 15:03

    すみません、その2つも実行してみましたが未承認のコメントが掲載されるという状況は変わりませんでした。

    キャンセル

  • 2016/08/24 17:16

    表示内容もですが、$commentsに入っているデータそのものを解析してください。
    get_commentsのマニュアルはご覧になっているかと思いますが、承認フラグは立っているのでしょうか、もしくは混在してしまっているのでしょうか。
    また、対象のコメントのステータスを承認、スパム、削除に変えた場合の表示はどうなるのでしょうか。

    仕様外の動作をしてしまっている場合は基本的に虱潰しにして色々試してみてください。
    「承認待ちが出てしまう」なのか「承認待ちも」出てしまうなのか。
    プラグインを全部止めると、テーマを変えるとどうなるのか。
    Wordpressの問題解決の基本です。

    私は当事者ではありませんしそのサイトの中まで見ることは出来ないのですから・・・
    厳しい言い方になってしまいますが、ShogoOnoさんがまず試行錯誤して問題を切り出す動きを見せていいただかないとただのコメントと時間の浪費になってしまいます。

    キャンセル

  • 2016/08/26 01:36

    kuck1uさんの回答を参考にプラグインを検証したところ、古いプラグインが原因だったことがわかりました。
    初歩的なミスで申し訳ありません。
    親切に回答していただき、ありがとうございました。

    キャンセル

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

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