Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raviousprime/6a558dc41e0c0a78c2aab0f411b8643a to your computer and use it in GitHub Desktop.
Save raviousprime/6a558dc41e0c0a78c2aab0f411b8643a to your computer and use it in GitHub Desktop.
create a member type field on woocommerce registration page and set after user creation
<?php
/**
* Get member types
*
* @return array
*/
function buddydev_wc_get_member_types() {
if ( ! function_exists( 'bp_get_member_types' ) ) {
return array();
}
$register_member_types = bp_get_member_types( array(), 'objects' );
$member_types = array();
foreach ( $register_member_types as $member_type => $member_type_ob ) {
$member_types[ $member_type ] = $member_type_ob->labels['singular_name'];
}
return $member_types;
}
/**
* Render member type field on registration form
*/
function buddydev_wc_attach_member_type_field() {
$member_types = buddydev_wc_get_member_types();
if ( empty( $member_types ) ) {
return;
}
$selected = isset( $_POST['wc_member_type'] ) ? $_POST['wc_member_type'] : '';
?>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="reg_user_member_type"><?php esc_html_e( 'Member Type', 'woocommerce' ); ?></label>
<select name="wc_member_type" id="reg_user_member_type">
<option value="" <?php selected( $selected, '', true ); ?>><?php esc_html_e( 'Select', 'woocommerce' );?></option>
<?php foreach ( $member_types as $member_type => $label ) : ?>
<option value="<?php echo esc_attr( $member_type ); ?>" <?php selected( $selected, $member_type, true ); ?>><?php echo esc_html( $label ); ?></option>
<?php endforeach; ?>
</select>
</p>
<?php
}
add_action( 'woocommerce_register_form_start', 'buddydev_wc_attach_member_type_field' );
/**
* Assign member type to user after creation
*/
add_action( 'woocommerce_created_customer', function( $customer_id ) {
if ( ! isset( $_POST['woocommerce-register-nonce'] ) || ! wp_verify_nonce( $_POST['woocommerce-register-nonce'], 'woocommerce-register' ) ) {
return;
}
if ( function_exists( 'bp_set_member_type' ) && ! empty( $_POST['wc_member_type'] ) ) {
bp_set_member_type( $customer_id, $_POST['wc_member_type'] );
}
} );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment