is_main_query() ) return; // Bail if filters are suppressed on this query if ( true == $posts_query->get( 'suppress_filters' ) ) return; // Bail if in admin if ( is_admin() ) return; // Get query variables $bbp_view = $posts_query->get( bbp_get_view_rewrite_id() ); $bbp_user = $posts_query->get( bbp_get_user_rewrite_id() ); $is_edit = $posts_query->get( bbp_get_edit_rewrite_id() ); // It is a user page - We'll also check if it is user edit if ( !empty( $bbp_user ) ) { // Not a user_id so try email and slug if ( !is_numeric( $bbp_user ) ) { // Email was passed if ( is_email( $bbp_user ) ) { $bbp_user = get_user_by( 'email', $bbp_user ); // Try nicename } else { $bbp_user = get_user_by( 'slug', $bbp_user ); } // If we were successful, set to ID if ( is_object( $bbp_user ) ) { $bbp_user = $bbp_user->ID; } } // Cast as int, just in case $bbp_user = (int) $bbp_user; // 404 and bail if user does not have a profile if ( ! bbp_user_has_profile( $bbp_user ) ) { $posts_query->set_404(); return; } /** User Exists *******************************************************/ $is_favs = $posts_query->get( bbp_get_user_favorites_rewrite_id() ); $is_subs = $posts_query->get( bbp_get_user_subscriptions_rewrite_id() ); $is_topics = $posts_query->get( bbp_get_user_topics_rewrite_id() ); $is_replies = $posts_query->get( bbp_get_user_replies_rewrite_id() ); // View or edit? if ( !empty( $is_edit ) ) { // We are editing a profile $posts_query->bbp_is_single_user_edit = true; // Load the core WordPress contact methods if ( !function_exists( '_wp_get_user_contactmethods' ) ) { include_once( ABSPATH . 'wp-includes/registration.php' ); } // Load the edit_user functions if ( !function_exists( 'edit_user' ) ) { require_once( ABSPATH . 'wp-admin/includes/user.php' ); } // Load the grant/revoke super admin functions if ( is_multisite() && !function_exists( 'revoke_super_admin' ) ) { require_once( ABSPATH . 'wp-admin/includes/ms.php' ); } // Editing a user $posts_query->bbp_is_edit = true; // User favorites } elseif ( ! empty( $is_favs ) ) { $posts_query->bbp_is_single_user_favs = true; // User subscriptions } elseif ( ! empty( $is_subs ) ) { $posts_query->bbp_is_single_user_subs = true; // User topics } elseif ( ! empty( $is_topics ) ) { $posts_query->bbp_is_single_user_topics = true; // User topics } elseif ( ! empty( $is_replies ) ) { $posts_query->bbp_is_single_user_replies = true; // User profile } else { $posts_query->bbp_is_single_user_profile = true; } // Looking at a single user $posts_query->bbp_is_single_user = true; // Make sure 404 is not set $posts_query->is_404 = false; // Correct is_home variable $posts_query->is_home = false; // Get the user data $user = get_userdata( $bbp_user ); // User is looking at their own profile if ( get_current_user_id() == $user->ID ) { $posts_query->bbp_is_single_user_home = true; } // Set bbp_user_id for future reference $posts_query->set( 'bbp_user_id', $user->ID ); // Set author_name as current user's nicename to get correct posts $posts_query->set( 'author_name', $user->user_nicename ); // Set the displayed user global to this user bbpress()->displayed_user = $user; // View Page } elseif ( !empty( $bbp_view ) ) { // Check if the view exists by checking if there are query args are set $view_args = bbp_get_view_query_args( $bbp_view ); // Bail if view args is false (view isn't registered) if ( false === $view_args ) { $posts_query->set_404(); return; } // Correct is_home variable $posts_query->is_home = false; // We are in a custom topic view $posts_query->bbp_is_view = true; // Forum/Topic/Reply Edit Page } elseif ( !empty( $is_edit ) ) { // Get the post type from the main query loop $post_type = $posts_query->get( 'post_type' ); // Check which post_type we are editing, if any if ( !empty( $post_type ) ) { switch( $post_type ) { // We are editing a forum case bbp_get_forum_post_type() : $posts_query->bbp_is_forum_edit = true; $posts_query->bbp_is_edit = true; break; // We are editing a topic case bbp_get_topic_post_type() : $posts_query->bbp_is_topic_edit = true; $posts_query->bbp_is_edit = true; break; // We are editing a reply case bbp_get_reply_post_type() : $posts_query->bbp_is_reply_edit = true; $posts_query->bbp_is_edit = true; break; } // We are editing a topic tag } elseif ( bbp_is_topic_tag() ) { $posts_query->bbp_is_topic_tag_edit = true; $posts_query->bbp_is_edit = true; } // We save post revisions on our own remove_action( 'pre_post_update', 'wp_save_post_revision' ); // Topic tag page } elseif ( bbp_is_topic_tag() ) { $posts_query->set( 'bbp_topic_tag', get_query_var( 'term' ) ); $posts_query->set( 'post_type', bbp_get_topic_post_type() ); $posts_query->set( 'posts_per_page', bbp_get_topics_per_page() ); } }