Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kimwhite/1189c45fae2c0449213b229e8df64e14 to your computer and use it in GitHub Desktop.
Save kimwhite/1189c45fae2c0449213b229e8df64e14 to your computer and use it in GitHub Desktop.
Adds Billing Address and Shipping Address (via the Shipping Add On) to the Edit User profile, frontend Member Profile Edit, and the Add Member Admin page.
<?php
/*
* Adds Billing Address and Shipping Address (via the Shipping Add On) to the Edit User profile,
* frontend Member Profile Edit, and the 'Add Member' page in the WordPress admin.
*
* You can add this recipe to your site by creating a custom plugin
* or using the Code Snippets plugin available for free in the WordPress repository.
* Read this companion article for step-by-step directions on either method.
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
*
*/
function add_billing_shipping_fields_to_profile_and_add_member() {
//define the fields
$fields = array();
// Billing Address fields added to profile (true) and addmember (true).
$fields[] = new PMPro_Field( 'pmpro_baddress1', 'text', array( 'label' => 'Billing Address 1', 'size' => 40, 'profile' => true, 'required' => false, 'addmember' => true ) );
$fields[] = new PMPro_Field( 'pmpro_baddress2', 'text', array( 'label' => 'Billing Address 2', 'size' => 40, 'profile' => true, 'required' => false, 'addmember' => true ) );
$fields[] = new PMPro_Field( 'pmpro_bcity', 'text', array( 'label' => 'Billing City', 'size' => 40, 'profile' => true, 'required' => false, 'addmember' => true ) );
$fields[] = new PMPro_Field( 'pmpro_bstate', 'text', array( 'label' => 'Billing State', 'size' => 10, 'profile' => true, 'required' => false, 'addmember' => true ) );
$fields[] = new PMPro_Field( 'pmpro_bzipcode', 'text', array( 'label' => 'Billing Postal Code', 'size' => 10, 'profile' => true, 'required' => false, 'addmember' => true ) );
$fields[] = new PMPro_Field( 'pmpro_bcountry', 'text', array( 'label' => 'Billing Country', 'profile '=>true, 'required' => false, 'addmember' => true));
$fields[] = new PMPro_Field( 'pmpro_bphone', 'text', array( 'label' => 'Billing Phone', 'size' => 40, 'profile' => true, 'required' => false, 'addmember' => true ) );
// Shipping Address fields added to addmember (true). These fields are already shown on profile by the Add On.
$fields[] = new PMPro_Field( 'pmpro_saddress1', 'text', array( 'label' => 'Shipping Address 1', 'size' => 40, 'required' => false, 'addmember' => true));
$fields[] = new PMPro_Field( 'pmpro_saddress2', 'text', array( 'label' => 'Shipping Address 2', 'size' => 40, 'required' => false, 'addmember' => true));
$fields[] = new PMPro_Field( 'pmpro_scity', 'text', array( 'label' => 'Shipping City', 'size' => 40, 'required' => false, 'addmember' => true));
$fields[] = new PMPro_Field( 'pmpro_sstate', 'text', array( 'label' => 'Shipping State', 'size' => 10, 'required' => false, 'addmember' => true ) );
$fields[] = new PMPro_Field( 'pmpro_szipcode', 'text', array( 'label' => 'Shipping Postal Code', 'size' => 10, 'required' => false, 'addmember' => true));
$fields[] = new PMPro_Field( 'pmpro_scountry', 'text', array( 'label' => 'Shipping Country', 'required' => false, 'addmember' => true));
$fields[] = new PMPro_Field( 'pmpro_sphone', 'text', array( 'label' => 'Shipping Phone', 'size' => 40, 'required' => false, 'addmember' => true));
// Add a field group to put our fields into.
pmpro_add_field_group( 'Shipping Address' );
// Add all of our fields into that group.
foreach ( $fields as $field ) {
pmpro_add_user_field(
'Shipping Address', // Which group to add to.
$field // PMPro_Field object
);
}
}
add_action( 'init', 'add_billing_shipping_fields_to_profile_and_add_member' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment