BBP_BuddyPress_Members
Member profile modifications
Description
Source
File: bp-forums/members.php
class BBP_BuddyPress_Members { /** * Main constructor for modifying Forums profile links * * @since bbPress (r4395) */ public function __construct() { $this->setup_actions(); $this->setup_filters(); } /** * Setup the actions * * @since bbPress (r4395) * * @access private * @uses add_filter() To add various filters * @uses add_action() To add various actions */ private function setup_actions() { // Allow unsubscribe/unfavorite links to work add_action( 'bp_template_redirect', array( $this, 'set_member_forum_query_vars' ) ); /** Favorites *********************************************************/ // Move handler to 'bp_actions' - BuddyBoss bypasses template_loader remove_action( 'template_redirect', 'bbp_favorites_handler', 1 ); add_action( 'bp_actions', 'bbp_favorites_handler', 1 ); /** Subscriptions *****************************************************/ // Move handler to 'bp_actions' - BuddyBoss bypasses template_loader remove_action( 'template_redirect', 'bbp_subscriptions_handler', 1 ); add_action( 'bp_actions', 'bbp_subscriptions_handler', 1 ); } /** * Setup the filters * * @since bbPress (r4395) * * @access private * @uses add_filter() To add various filters * @uses add_action() To add various actions */ private function setup_filters() { add_filter( 'bbp_pre_get_user_profile_url', array( $this, 'user_profile_url' ) ); add_filter( 'bbp_get_favorites_permalink', array( $this, 'get_favorites_permalink' ), 10, 2 ); add_filter( 'bbp_get_subscriptions_permalink', array( $this, 'get_subscriptions_permalink' ), 10, 2 ); } /** Filters ***************************************************************/ /** * Override Forums profile URL with BuddyBoss profile URL * * @since bbPress (r3401) * @param string $url * @param int $user_id * @param string $user_nicename * @return string */ public function user_profile_url( $user_id ) { // Define local variable(s) $profile_url = ''; $component_slug = bbpress()->extend->buddypress->slug; // Special handling for forum component if ( bp_is_current_component( $component_slug ) ) { // Empty action or 'topics' action if ( !bp_current_action() || bp_is_current_action( bbp_get_topic_archive_slug() ) ) { $profile_url = bp_core_get_user_domain( $user_id ) . $component_slug . '/' . bbp_get_topic_archive_slug(); // Empty action or 'topics' action } elseif ( bp_is_current_action( bbp_get_reply_archive_slug() ) ) { $profile_url = bp_core_get_user_domain( $user_id ) . $component_slug . '/' . bbp_get_reply_archive_slug(); // 'favorites' action } elseif ( bbp_is_favorites_active() && bp_is_current_action( bbp_get_user_favorites_slug() ) ) { $profile_url = $this->get_favorites_permalink( '', $user_id ); // 'subscriptions' action } elseif ( bbp_is_subscriptions_active() && bp_is_current_action( bbp_get_user_subscriptions_slug() ) ) { $profile_url = $this->get_subscriptions_permalink( '', $user_id ); } // Not in users' forums area } else { $profile_url = bp_core_get_user_domain( $user_id ); } return trailingslashit( $profile_url ); } /** * Override Forums favorites URL with BuddyBoss profile URL * * @since bbPress (r3721) * @param string $url * @param int $user_id * @return string */ public function get_favorites_permalink( $url, $user_id ) { $component_slug = bbpress()->extend->buddypress->slug; $url = trailingslashit( bp_core_get_user_domain( $user_id ) . $component_slug . '/' . bbp_get_user_favorites_slug() ); return $url; } /** * Override Forums subscriptions URL with BuddyBoss profile URL * * @since bbPress (r3721) * @param string $url * @param int $user_id * @return string */ public function get_subscriptions_permalink( $url, $user_id ) { $component_slug = bbpress()->extend->buddypress->slug; $url = trailingslashit( bp_core_get_user_domain( $user_id ) . $component_slug . '/' . bbp_get_user_subscriptions_slug() ); return $url; } /** * Set favorites and subscriptions query variables if viewing member profile * pages. * * @since bbPress (r4615) * * @global WP_Query $wp_query * @return If not viewing your own profile */ public function set_member_forum_query_vars() { // Special handling for forum component if ( ! bp_is_my_profile() ) return; global $wp_query; // 'favorites' action if ( bbp_is_favorites_active() && bp_is_current_action( bbp_get_user_favorites_slug() ) ) { $wp_query->bbp_is_single_user_favs = true; // 'subscriptions' action } elseif ( bbp_is_subscriptions_active() && bp_is_current_action( bbp_get_user_subscriptions_slug() ) ) { $wp_query->bbp_is_single_user_subs = true; } } }
Changelog
Version | Description |
---|---|
bbPress (r4395) | Introduced. |
Methods
- __construct — Main constructor for modifying Forums profile links
- get_favorites_permalink — Override Forums favorites URL with BuddyBoss profile URL
- get_subscriptions_permalink — Override Forums subscriptions URL with BuddyBoss profile URL
- set_member_forum_query_vars — Set favorites and subscriptions query variables if viewing member profile pages.
- setup_actions — Setup the actions
- setup_filters — Setup the filters
- user_profile_url — Override Forums profile URL with BuddyBoss profile URL
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.