This answer is completely based on the code and help from -KIKO Software. I did have to add in the global ‘$current_user’ for it to work correctly. Also, per @kikosoftware foresight, I added a means to track by year, just in case a user did not visit the site until the same quarter the following year.
function all_access_levels($current_user)
{
global $current_user;
$user_id = $current_user->ID;
$current_quarter="Q" . ceil(date('n') / 3) . '_' . date('Y');
$past_meta_year = get_user_meta($user_id,'cc_event_date_clicked');
$get_meta_date = $past_meta_year[0];
$last_four_of_past_year = substr($get_meta_date,-4);
// unset meta data for all other quarters
for ($quarter = 1; $quarter <= 4; $quarter++) {
if ('Q' . $quarter . '_' . $last_four_of_past_year != $current_quarter) {
delete_user_meta($user_id, 'cc_event_date_clicked', 'Q' . $quarter . '_' . $last_four_of_past_year);
}
}
// level 3 users can access when they haven't any meta data
if (empty(get_user_meta($user_id, 'cc_event_date_clicked'))) {
return ['3'];
}
return false;
}
add_filter('cc_all_access_levels', 'all_access_levels', 10, 3);