Skip to content

Instantly share code, notes, and snippets.

@spivurno
Last active July 18, 2020 00:27
Show Gist options
  • Save spivurno/7858140 to your computer and use it in GitHub Desktop.
Save spivurno/7858140 to your computer and use it in GitHub Desktop.
Gravity Perks // GP Limit Choices // Display Spots Left in Choice Labels
<?php
/**
* Display how many spots are left in the choice label when using the GP Limit Choices perk
* http://gravitywiz.com/gravity-perks/
*/
add_filter( 'gplc_remove_choices', '__return_false' );
add_filter( 'gplc_pre_render_choice', 'my_add_how_many_left_message', 10, 5 );
function my_add_how_many_left_message( $choice, $exceeded_limit, $field, $form, $count ) {
$limit = rgar( $choice, 'limit' );
$how_many_left = max( $limit - $count, 0 );
$message = "($how_many_left spots left)";
$choice['text'] = $choice['text'] . " $message";
return $choice;
}
@SahilMepani
Copy link

SahilMepani commented Jan 27, 2017

Can the same be added to dropdown?

@mike-weiner
Copy link

mike-weiner commented Jul 17, 2020

How could this be modified to only add the " x spots left" message to certain types of fields or by certain fields only using their field id?

@mike-weiner
Copy link

mike-weiner commented Jul 18, 2020

For anyone else that might want to restrict this to just a certain field on a certain form, here is how I achieved that:

You will need to modify the $form['id'] and $field->id that you want to target within the condition of the if-statement.

add_filter( 'gplc_remove_choices', '__return_false' ); 

add_filter( 'gplc_pre_render_choice', 'mw_add_how_many_left_message_to_limited_fields', 10, 5 );
function mw_add_how_many_left_message_to_limited_fields( $choice, $exceeded_limit, $field, $form, $count ) {

	$limit         = rgar( $choice, 'limit' );
	$how_many_left = max( $limit - $count, 0 );

	$message = "($how_many_left Spots Left)"; // Modify Message Displayed for # of "Spots Left"

	if ( $field->get_input_type() == 'select' && $field->id == '17' && $form['id'] == '5') {
		$choice['text'] = $choice['text'] . " $message";
        }

	return $choice;
}

@spivurno
Copy link
Author

Thanks for sharing, @mike-weiner. Another option is to include the target form and field IDs in the filter name like so:

gplc_pre_render_choice_5_17

@mike-weiner
Copy link

@spivurno Thanks for the quick response! That is much easier!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment