WPAdverts - How to limit form submission 10 per month

I currently use wpadverts plugin and wants to limit the submission to 10 submit / month.

How can I do that?

I think I need to make a new row like "form_submissions" in "wp_usermeta" and store every time when the user submitted the form and make a cron task to delete the row value after a month.

And I need to query the row value on the form submit page like this:

$result = mysqli_query($connect, "SELECT COUNT(*) AS `form_submission` FROM wp_usermeta WHERE user_id = $user_id");

    $row = mysqli_fetch_assoc($result);

    if($row['form_submission'] > 10) {
        // can't submit the form because you already have 10 post
    } else {
        // you can submit the form
    }

Or I'm totally lost? Sorry for my bad english.

Answers 1

  • You can do it using get_user_meta and update_user_meta:

    $value = get_user_meta($user_id, 'form_submission', true); 
    if (!$value) {$value = 1;} else {$value = $value + 1;}
    if ($value < 11) {
        update_user_meta($user_id, 'form_submission', $value);
    } else {
        // too many form submissions
    }
    

    You could also expand on this to store the submission month too if you don't want to use a cron job.

    $month = get_user_meta($user_id, 'submission_month', true);
    $value = get_user_meta($user_id, 'form_submission', true); 
    
    if ($month && ($month != date('m',time())) ) {
        update_user_meta($user_id, 'submission_month', date('m', time());
        $newmonth = true;
    } else {$newmonth = false;}
    if (!$value || $newmonth) {$value = 1;} else {$value = $value + 1;}
    if ($value < 11) {
        update_user_meta($user_id, 'form_submission', $value);
    } else {
        // too many form submissions
    }
    

Related Questions