[buddypress-trac] [BuddyPress] #5170: bp_has_members() in widgets stomps $members_template global

buddypress-trac noreply at wordpress.org
Thu Sep 12 19:26:28 UTC 2013

#5170: bp_has_members() in widgets stomps $members_template global
 Reporter:  johnjamesjacoby  |      Owner:  johnjamesjacoby
     Type:  defect (bug)     |     Status:  new
 Priority:  high             |  Milestone:  Awaiting Review
Component:  Members          |    Version:  1.0
 Severity:  major            |   Keywords:  dev-feedback, commit
 `bp_has_members()` uses the `$members_template`, similar to the way
 `query_posts()` uses `$wp_query`. As such, subsequent calls to
 `bp_has_members()` leave the `$members_template` global in a polluted
 state that does not reflect the actual main query loop.

 This results in some craziness, again, similar to WordPress core. Template
 functions tied to the `$members_template` global
 (`bp_get_member_user_id()`, `bp_get_member_user_nicename()`, et all) may
 return unexpected results when more than one call to `bp_has_members()`
 occurs on the same page output, and also leaves no way to get back the
 main query loop data.

 To dance around this issue, WordPress uses the `$wp_the_query` variable,
 and uses `wp_reset_query()` to swap `$wp_query` back to it's natural
 state. My proposed patch does something similar, introducing a few static
 methods to the `BP_Core_Members_Template` class, and a
 `bp_reset_members_query()` helper function, which is patched to be used in
 our core widgets.

 Worth noting, all of our `_Template` classes and helper function sets
 exhibit this same problem. Groups, Activity, Blogs, Messages, Settings,
 and XProfile, will all need similar attention. As the members component is
 always on, and the widget is frequently used, I'm using it as my first

Ticket URL: <https://buddypress.trac.wordpress.org/ticket/5170>
BuddyPress <http://buddypress.org/>

More information about the buddypress-trac mailing list