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

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

ただいまの
回答率

88.79%

wordpressで同一人物が一つの記事で二回以上コメントできないようにしたい&&どこがダメだったかを知りたい!

受付中

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 508

kyokosann

score 13

前にも同一の質問をしましたが、今回は少し詳細にお聞きしたいです。wordpressで記事1つ毎に、一人一回しかコメントできないように制限をかけたいです。
つまり、同一人物が一つの記事で二回以上コメントできないようにしたいです。
しかしどう書けばいいかがわかりません。
comment.phpです

comment_form(
        array(
            'comment_field' => '<p class="comment-form-comment"><label for="comment">' . esc_html__( 'Comment', 'loose' ) . '</label> <textarea id="comment" name="comment" rows="1" aria-required="true" required="required" placeholder="' . esc_html__( 'Comment', 'loose' ) . '" ></textarea></p>',
            'comment_notes_before' => '',
        )
    )

の部分を

if(empty(get_comments([
  'post_id'=>get_the_ID(),
  'user'=>get_current_user_id()
]))){
comment_form(
        array(
            'comment_field' => '<p class="comment-form-comment"><label for="comment">' . esc_html__( 'Comment', 'loose' ) . '</label> <textarea id="comment" name="comment" rows="1" aria-required="true" required="required" placeholder="' . esc_html__( 'Comment', 'loose' ) . '" ></textarea></p>',
            'comment_notes_before' => '',
        )
    )


}


にしてみたのですが今まで書いたコメントが全く出ない上に、最初からコメント欄がでません。
つまりうまくいっていません。

私の過去の質問のcomment.phpではうまくいきました。
どこがダメなのか、どうしたらいいかを教えてもらえると嬉しいです。
お願いします。
↓はcomment.phpの全体のコードです。

<?php
/**
 * The template for displaying comments.
 *
 * This is the template that displays the area of the page that contains both the current comments
 * and the comment form.
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package loose
 */

/*
 * If the current post is protected by a password and
 * the visitor has not yet entered the password we will
 * return early without loading the comments.
 */
if ( post_password_required() ) {
    return;
}
?>

<div id="comments" class="comments-area col-md-12">


    <?php if ( have_comments() ) : ?>
        <h2 class="comments-title">
            <?php
                printf( // WPCS: XSS OK.
                    // translators: number of comments.
                    esc_html( _nx( '%1$s Comment', '%1$s Comments', get_comments_number(), 'comments title', 'loose' ) ),
                    number_format_i18n( get_comments_number() ),
                    '<span>' . get_the_title() . '</span>'
                );
            ?>
        </h2>

        <?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // Are there comments to navigate through? ?>
        <nav id="comment-nav-above" class="navigation comment-navigation" role="navigation">
            <h2 class="screen-reader-text"><?php esc_html_e( 'Comment navigation', 'loose' ); ?></h2>
            <div class="nav-links">

                <div class="nav-previous"><?php previous_comments_link( esc_html__( 'Older Comments', 'loose' ) ); ?></div>
                <div class="nav-next"><?php next_comments_link( esc_html__( 'Newer Comments', 'loose' ) ); ?></div>

            </div><!-- .nav-links -->
        </nav><!-- #comment-nav-above -->
        <?php endif; // Check for comment navigation. ?>

        <ul class="comment-list">
            <?php
                wp_list_comments(
                    array(
                        'style'      => 'ul',
                        'short_ping' => true,
                        'avatar_size' => '50',
                        'callback' => 'loose_comment',
                    )
                );
            ?>
        </ul><!-- .comment-list -->

        <?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // Are there comments to navigate through? ?>
        <nav id="comment-nav-below" class="navigation comment-navigation" role="navigation">
            <h2 class="screen-reader-text"><?php esc_html_e( 'Comment navigation', 'loose' ); ?></h2>
            <div class="nav-links">

                <div class="nav-previous"><?php previous_comments_link( esc_html__( 'Older Comments', 'loose' ) ); ?></div>
                <div class="nav-next"><?php next_comments_link( esc_html__( 'Newer Comments', 'loose' ) ); ?></div>

            </div><!-- .nav-links -->
        </nav><!-- #comment-nav-below -->
        <?php endif; // Check for comment navigation. ?>

    <?php endif; // Check for have_comments(). ?>

    <?php
        // If comments are closed and there are comments, let's leave a little note, shall we?
    if ( ! comments_open() && '0' != get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) :
        ?>
    <p class="no-comments"><?php esc_html_e( 'Comments are closed.', 'loose' ); ?></p>
    <?php endif; ?>

    <?php


    comment_form(
        array(
            'comment_field' => '<p class="comment-form-comment"><label for="comment">' . esc_html__( 'Comment', 'loose' ) . '</label> <textarea id="comment" name="comment" rows="1" aria-required="true" required="required" placeholder="' . esc_html__( 'Comment', 'loose' ) . '" ></textarea></p>',
            'comment_notes_before' => '',
        )
    )

    ?>

</div><!-- #comments -->
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • CHERRY

    2019/04/02 10:28

    同一人物の定義は、何でしょうか?

    WordPress にユーザー登録しないとコメントできない設定で、登録されているアカウント毎に1回限りですか?

    キャンセル

回答 1

+1

とりあえずコードエラーがある箇所の指摘。

if(empty(get_comments([
  'post_id'=>get_the_ID(),
  'user'=>get_current_user_id()
]))){
comment_form(
        array(
            'comment_field' => '<p class="comment-form-comment"><label for="comment">' . esc_html__( 'Comment', 'loose' ) . '</label> <textarea id="comment" name="comment" rows="1" aria-required="true" required="required" placeholder="' . esc_html__( 'Comment', 'loose' ) . '" ></textarea></p>',
            'comment_notes_before' => '',
        )
    ); // ← セミコロンが無い
}

【WordPress初心者におすすめ!デバッグモードの使い方 | Mignon Style】
http://mignonstyle.com/debug-mode/
※ 「wp-config.phpに書かれている」と書いてありますが、環境によって書かれていないことがあります。その場合はwp-config.phpの最後に追記してください。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

同じタグがついた質問を見る

  • トップ
  • PHPに関する質問
  • wordpressで同一人物が一つの記事で二回以上コメントできないようにしたい&&どこがダメだったかを知りたい!