web-dev-qa-db-ja.com

登録ユーザーありの1日のコメント数を制限するにはどうすればよいですか。

私はWPSEでこのコードを見つけました:

global $current_user, $post;
$args = array( 'user_id' => $current_user->ID, 'post_id' => $post->ID );
$usercomment = get_comments( $args );
if ( 1 <= count( $usercomment ) ) {
    echo 'disabled';
} else {
    comment_form();
}

注:1ユーザーあたりの投稿あたりのコメント数を制限するようです。

1日の登録ユーザーあたりのコメント数を制限したいです。

コードで1日に許可されるコメントの量を変更できるようにしたいです。


誰かが正しいコードで私を手伝ってくれるなら、それは大いに感謝されるでしょう。また、このコードをcomments.phpファイルのどこに置きますか?

ありがとうございました。

4
Chad

現在のユーザーごとにすべてのコメントを取得してループし、今日の状況を確認することも、カスタムSQLクエリを作成して過去24時間のコメント数だけを選択することもできます。

global $wpdb,$current_user;
$sql = $wpdb->prepare("
    SELECT count(*)
    FROM wp_comments 
    WHERE comment_author = '%s'
    AND comment_date >= DATE_SUB(NOW(),INTERVAL 1 DAY);"
    ,$current_user);
$count = $wpdb->get_results($sql);
2
Bainternet

これが実用的なバージョンです、私はそれを成し遂げるために@Bainternetによるテクニックを参照しました。 <?php comment_form(); ?>をこのコードに置き換えてください。

<?php 
    global $wpdb,$current_user;
    $limit = 5; //this is limit per day per user
    $comment_count = $wpdb->get_var( $wpdb->prepare("
        SELECT count(*)
        FROM wp_comments 
        WHERE comment_author = '%s'
        AND comment_date >= DATE_SUB(NOW(),INTERVAL 1 DAY);"
        ,$current_user->user_login) );

    if($comment_count < $limit) {
        comment_form();
    }   
    else {
        echo 'exceeded comments limit - '.$limit;
    }
?>

- TwentyTenテーマがon_にインストールされたWordpress 3.4.1でテスト済み

注意 -

  • 単にその日に5つ以上のコメントを持つユーザーからコメントフォームを隠しますRegardless of comment status
  • これを - Discussion Settingsから無効にしない限り、未登録ユーザーにコメントフォームを表示します
1
amit