Skip to content

Instantly share code, notes, and snippets.

@cartpauj
Last active March 13, 2022 19:42
Show Gist options
  • Save cartpauj/45629aa5d6ac83773d9ef2520a8e2aeb to your computer and use it in GitHub Desktop.
Save cartpauj/45629aa5d6ac83773d9ef2520a8e2aeb to your computer and use it in GitHub Desktop.
Remove State Field from MemberPress Signup Forms
<?php
//Remove the State Field completely
function trim_down_address_fields($options) {
foreach($options->address_fields as $i => $o) {
if($o->field_key == 'mepr-address-state') {
unset($options->address_fields[$i]);
}
}
return $options;
}
add_filter('mepr_fetch_options', 'trim_down_address_fields');
//Add a fake state value to each user
function populate_state_field($event) {
$user = $event->get_data();
update_user_meta($user->ID, 'mepr-address-state', 'fake');
}
add_action('mepr-event-login', 'populate_state_field');
//Single page checkout support
function mepr_cust_fake_state($tax_rate, $country, $state, $postcode, $city, $street, $usr = null, $prd_id = null) {
$_POST['mepr_address_state'] = 'fake';
return $tax_rate;
}
add_filter('mepr_find_tax_rate', 'mepr_cust_fake_state', 19, 8);
@cartpauj
Copy link
Author

cartpauj commented Feb 8, 2019

This could cause problems with the Gateway credit card address validations, but here's how you can remove all address fields except for the Country field.

<?php
//Remove all address fields except country
function trim_down_address_fields($options) {
  foreach($options->address_fields as $i => $o) {
    if($o->field_key != 'mepr-address-country') {
      unset($options->address_fields[$i]);
    }
  }
  return $options;
}
add_filter('mepr_fetch_options', 'trim_down_address_fields');

//Add a fake value to the address fields
function populate_state_field($event) {
  $user = $event->get_data();
  update_user_meta($user->ID, 'mepr-address-one', '123 Street');
  update_user_meta($user->ID, 'mepr-address-city', 'Some City');
  update_user_meta($user->ID, 'mepr-address-state', 'Some State');
  update_user_meta($user->ID, 'mepr-address-zip', '11111');
}
add_action('mepr-event-login', 'populate_state_field');

@mbaierl
Copy link

mbaierl commented Mar 8, 2021

Cost me a while, but this gist does not work.
The code always returns the VAT of the vendor country.

Working code:

<?php
//Remove the State Field completely
function trim_down_address_fields($options) {
  foreach($options->address_fields as $i => $o) {
    if($o->field_key == 'mepr-address-state') {
      unset($options->address_fields[$i]);
    }
    $_POST['mepr_address_state'] = 'fake';
  }

  return $options;
}
add_filter('mepr_fetch_options', 'trim_down_address_fields');

//Add a fake state value to each user
function populate_state_field($event) {
  $user = $event->get_data();
  update_user_meta($user->ID, 'mepr-address-state', 'fake');
}
add_action('mepr-event-login', 'populate_state_field');

@brave-sites
Copy link

Hi, Who can help me? I'm selling paid memberships, but I don't need the adress, zip, state or country (all my members are from the same country). I only need the first name, last name and e-mailadress. How do I remove all this adress-items?

@cartpauj
Copy link
Author

@brave-sites are you charging taxes? If not, just disable the MemberPress Address fields in the "Fields" tab of the settings.

@brave-sites
Copy link

@brave-sites are you charging taxes? If not, just disable the MemberPress Address fields in the "Fields" tab of the settings.

Yes, I do charge taxes. 21% is required where I live.. When I disable the taxes, I don´t know if everything ´ll be okay with the tax authorities...

@nspainting
Copy link

Hi @mbaierl - your code works well for me, thank you so much. How can it be altered to ask for just the country plus zip code?

@mbaierl
Copy link

mbaierl commented Jun 30, 2021

The code does not modify the country or zip code fields; it simply removes the state field.

Hi @mbaierl - your code works well for me, thank you so much. How can it be altered to ask for just the country plus zip code?

@slackday
Copy link

slackday commented Mar 13, 2022

The "fake" value of state will show up in every email template also state cannot seem to be an empty value. Not a great solution but this seem like a MemberPress issue.

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