Opened 9 months ago
Last modified 7 days ago
#9057 assigned enhancement
Make BP Signups a Member's component deactivable feature
Reported by: | shawfactor | Owned by: | imath |
---|---|---|---|
Milestone: | 15.0.0 | Priority: | high |
Severity: | normal | Version: | 2.0 |
Component: | Members | Keywords: | needs-patch |
Cc: |
Description
Right now register is a fully fledged comonent but it is not listed in options-general.php?page=bp-components and cannot be deactivated.
This is not ideal as users may want to use non buddypress ways to register users some of which (e.g. registering via a third party like google) are much lower friction. These methods usually require registration to be open so it is not a question of toggling the global setting
Change History (14)
#1
@
9 months ago
- Component changed from Core to Members
- Milestone changed from Awaiting Review to 14.0.0
This ticket was mentioned in Slack in #buddypress by imath. View the logs.
8 months ago
#3
@
8 months ago
Hello @imath
I really like this idea and I would also like to add suggestion of the ability to control registrations based on a set threshold or number of already registered members. I would love to share my personal custom code with you so you can review it and improve on it. Adding this to core would be really awesome.
For example disable registrations when community has reached a threshold of 10,000 registered members
Thanks
<?php /* * Plugin Name: BuddyPress Registration Control * Description: Allows administrators to enable or disable user registration and select a URL to redirect to when registration is disabled. * Version: 1.0 */ // Register the new setting in the BuddyPress options group function custom_bp_register_settings() { if ( ! function_exists( 'bp_is_active' ) ) { return; } register_setting( 'buddypress', 'bp-disable-site-registration', 'custom_bp_sanitize_registration_status' ); register_setting( 'buddypress', 'bp-disable-site-registration-redirection-url', 'custom_bp_sanitize_redirection_url' ); register_setting( 'buddypress', 'bp-close-registration-at-users', 'custom_bp_sanitize_user_registration_count' ); } add_action( 'admin_init', 'custom_bp_register_settings' ); // add sanitization function function custom_bp_sanitize_registration_status( $status ) { $allowed_values = array( 'open', 'closed' ); if ( ! in_array( $status, $allowed_values ) ) { $status = 'open'; } return $status; } function custom_bp_sanitize_redirection_url( $url ) { return esc_url_raw( $url, null, 'db' ); } function custom_bp_sanitize_user_registration_count( $count ) { return absint( $count ); } // Add the new setting to the BuddyPress options page function custom_bp_add_settings_field() { if ( ! function_exists( 'bp_is_active' ) ) { return; } add_settings_field( 'bp-disable-site-registration', __( 'Registration', 'buddypress' ), 'custom_bp_settings_field_html', 'buddypress', 'bp_main', array( 'label_for' => 'bp-disable-site-registration', ) ); add_settings_field( 'bp-disable-site-registration-redirection-url', __( 'Redirection URL', 'buddypress' ), 'custom_bp_settings_redirection_url_html', 'buddypress', 'bp_main', array( 'label_for' => 'bp-disable-site-registration-redirection-url', ) ); add_settings_field( 'bp-close-registration-at-users', __( 'Limit User Registration Count', 'buddypress' ), 'custom_bp_close_registration_at_users_html', 'buddypress', 'bp_main', array( 'label_for' => 'bp-close-registration-at-users', ) ); } add_action( 'bp_register_admin_settings', 'custom_bp_add_settings_field', 10, 1 ); // Output the HTML for the setting field function custom_bp_settings_field_html() { $value = get_option( 'bp-disable-site-registration', 'open' ); ?> <select name="bp-disable-site-registration" id="bp-disable-site-registration"> <option value="open" <?php selected( $value, 'open' ); ?>><?php _e( 'Open', 'buddypress' ); ?></option> <option value="closed" <?php selected( $value, 'closed' ); ?>><?php _e( 'Closed', 'buddypress' ); ?></option> </select> <?php } // Output the HTML for the redirection URL field function custom_bp_settings_redirection_url_html() { $value = get_option( 'bp-disable-site-registration-redirection-url', home_url() ); ?> <input type="text" name="bp-disable-site-registration-redirection-url" id="bp-disable-site-registration-redirection-url" value="<?php echo esc_attr( $value ); ?>" required/> <?php } // Output the HTML for the close registration at users field function custom_bp_close_registration_at_users_html() { $value = get_option( 'bp-close-registration-at-users' ); ?> <input type="number" name="bp-close-registration-at-users" id="bp-close-registration-at-users" value="<?php echo esc_attr( $value ); ?>" required/> <p class="description"><?php _e( 'Enter the maximum number of users allowed to register on the site. Leave it empty or set to 0 for no limit.', 'buddypress' ); ?></p> <?php } // Check if registration is open or closed function custom_bp_redirect_registration() { if ( ! bp_is_register_page() ) { return; } if ( get_option( 'bp-disable-site-registration', 'open' ) !== 'closed' ) { return; } $total_users = count_users(); $total_users = $total_users['total_users']; $limit_user_registration_count = absint( get_option( 'bp-close-registration-at-users' ) ); if ( $total_users >= $limit_user_registration_count ) { wp_redirect( get_option( 'bp-disable-site-registration-redirection-url' ) ); // wp_safe_redirect? exit; } } add_action( 'bp_screens', 'custom_bp_redirect_registration' );
#4
@
8 months ago
Hi @teeboy4real
Thanks for your feedback, suggestion & code. I’ll look at it asap 👍
This ticket was mentioned in Slack in #buddypress by emaralive. View the logs.
6 months ago
#7
@
6 months ago
- Keywords needs-patch added
- Summary changed from Make register a deactivatable component to Make BP Signups a Member's component deactivable feature
- Version set to 2.0
This ticket was mentioned in Slack in #buddypress by imath. View the logs.
4 months ago
This ticket was mentioned in Slack in #buddypress by dcavins. View the logs.
3 months ago
#10
@
3 months ago
- Milestone changed from 14.0.0 to Up Next
We need more time, sorry to postpone this to next major release.
Thanks for your feedback, I agree about giving the choice to admin, see #9046
I’m unsure about the how, moving signups out of the members component to make it a separate one seems a bit too much to me. I was more thinking to an option. But let’s discuss about it during 14.0.0 dev cycle.