Created
August 21, 2019 11:00
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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