diff --git src/bp-core/bp-core-functions.php src/bp-core/bp-core-functions.php index 4329a6eb5..f3c8be614 100644 --- src/bp-core/bp-core-functions.php +++ src/bp-core/bp-core-functions.php @@ -3928,3 +3928,23 @@ function bp_is_large_install() { */ return (bool) apply_filters( 'bp_is_large_install', $is_large ); } + +/** + * Returns the upper limit on the "max" item count, for widgets that support it. + * + * @since 5.0.0 + * + * @param string $widget_class Optional. Class name of the calling widget. + * @return int + */ +function bp_get_widget_max_count_limit( $widget_class = '' ) { + /** + * Filters the upper limit on the "max" item count, for widgets that support it. + * + * @since 5.0.0 + * + * @param int $count Defaults to 50. + * @param string $widget_class Class name of the calling widget. + */ + return apply_filters( 'bp_get_widget_max_count_limit', 50, $widget_class ); +} diff --git src/bp-members/classes/class-bp-core-members-widget.php src/bp-members/classes/class-bp-core-members-widget.php index a23fa705b..21f204ce9 100644 --- src/bp-members/classes/class-bp-core-members-widget.php +++ src/bp-members/classes/class-bp-core-members-widget.php @@ -90,12 +90,15 @@ class BP_Core_Members_Widget extends WP_Widget { // Output before widget HTMl, title (and maybe content before & after it). echo $args['before_widget'] . $args['before_title'] . $title . $args['after_title']; + $max_limit = bp_get_widget_max_count_limit( __CLASS__ ); + $max_members = $settings['max_members'] > $max_limit ? $max_limit : (int) $settings['max_members']; + // Setup args for querying members. $members_args = array( 'user_id' => 0, 'type' => $settings['member_default'], - 'per_page' => $settings['max_members'], - 'max' => $settings['max_members'], + 'per_page' => $max_members, + 'max' => $max_members, 'populate_extras' => true, 'search_terms' => false, ); @@ -177,8 +180,10 @@ class BP_Core_Members_Widget extends WP_Widget { public function update( $new_instance, $old_instance ) { $instance = $old_instance; + $max_limit = bp_get_widget_max_count_limit( __CLASS__ ); + $instance['title'] = strip_tags( $new_instance['title'] ); - $instance['max_members'] = strip_tags( $new_instance['max_members'] ); + $instance['max_members'] = $new_instance['max_members'] > $max_limit ? $max_limit : intval( $new_instance['max_members'] ); $instance['member_default'] = strip_tags( $new_instance['member_default'] ); $instance['link_title'] = (bool) $new_instance['link_title']; @@ -194,11 +199,12 @@ class BP_Core_Members_Widget extends WP_Widget { * @return void */ public function form( $instance ) { + $max_limit = bp_get_widget_max_count_limit( __CLASS__ ); // Get widget settings. $settings = $this->parse_settings( $instance ); $title = strip_tags( $settings['title'] ); - $max_members = strip_tags( $settings['max_members'] ); + $max_members = $settings['max_members'] > $max_limit ? $max_limit : intval( $settings['max_members'] ); $member_default = strip_tags( $settings['member_default'] ); $link_title = (bool) $settings['link_title']; ?> @@ -219,7 +225,7 @@ class BP_Core_Members_Widget extends WP_Widget {