How do I create a form that only allows a certain number of submissions?

With the following code snippet you can easily use Greyd.Forms to create a form that only allows a limited number of form submissions and displays a corresponding info message. Please be aware of the comments in the snippet as the code needs to be adapted individually.

if ( ! defined( 'COUNTER_FORM_ID' ) ) {
	/**
	 * Replace this with the ID of your form.
	 */
	define( 'COUNTER_FORM_ID', 1 );
}

if ( ! defined( 'MAX_FORM_COUNT' ) ) {
	/**
	 * Define the maximum number of entries.
	 */
	define( 'MAX_FORM_COUNT', 100 );
}

/**
 * Handle the form submission.
 *
 * @param int $post_id The ID of the form.
 * @param array $form_data The form data.
 */
function handle_custom_counter_form( $post_id, $form_data ) {

	// Check if the form is the one we want to handle.
	if ( $post_id != COUNTER_FORM_ID ) return;

	// Get the current counter value.
	$counter = intval( get_option( 'my_custom_counter', 0 ) );

		// The maximum number of entries has been reached.
	if ( $counter >= MAX_FORM_COUNT ) {
		do_action(
			'formhandler_error',
			// The error message.
			__( 'The maximum number of entries has been reached.', 'my_textdomain' )
		);
		return;
	}

	$counter++;
	update_option( 'my_custom_counter', $counter );

	// debug message
	// remove this line in production
	do_action('formhandler_error', 'counter is now: ' . $counter);
}

add_action( 'formhandler_after_entry', 'handle_custom_counter_form', 5, 3);
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us