bp_nouveau_ajax_object_template_loader()
Load the template loop for the current object.
Description
Return
(string) Template loop for the specified object.
Source
File: bp-templates/bp-nouveau/includes/ajax.php
function bp_nouveau_ajax_object_template_loader() { if ( ! bp_is_post_request() ) { wp_send_json_error(); } if ( empty( $_POST['object'] ) ) { wp_send_json_error(); } $object = sanitize_title( $_POST['object'] ); // Bail if object is not an active component to prevent arbitrary file inclusion. if ( ! bp_is_active( $object ) ) { wp_send_json_error(); } // Nonce check! if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_' . $object ) ) { wp_send_json_error(); } $result = array(); if ( 'activity' === $object ) { $scope = ''; if ( ! empty( $_POST['scope'] ) ) { $scope = sanitize_text_field( $_POST['scope'] ); } // We need to calculate and return the feed URL for each scope. switch ( $scope ) { case 'friends': $feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/friends/feed/'; break; case 'groups': $feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/groups/feed/'; break; case 'favorites': $feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/favorites/feed/'; break; case 'mentions': $feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/feed/'; // Get user new mentions $new_mentions = bp_get_user_meta( bp_loggedin_user_id(), 'bp_new_mentions', true ); // If we have some, include them into the returned json before deleting them if ( is_array( $new_mentions ) ) { $result['new_mentions'] = $new_mentions; // Clear new mentions bp_activity_clear_new_mentions( bp_loggedin_user_id() ); } break; default: $feed_url = bp_get_sitewide_activity_feed_link(); break; } /** * Filters the browser URL for the template loader. * * @since BuddyPress 3.0.0 * * @param string $feed_url Template feed url. * @param string $scope Current component scope. */ $result['feed_url'] = apply_filters( 'bp_nouveau_ajax_object_template_loader', $feed_url, $scope ); } /* * AJAX requests happen too early to be seen by bp_update_is_directory() * so we do it manually here to ensure templates load with the correct * context. Without this check, templates will load the 'single' version * of themselves rather than the directory version. */ if ( ! bp_current_action() ) { bp_update_is_directory( true, bp_current_component() ); } // Get the template path based on the 'template' variable via the AJAX request. $template = isset( $_POST['template'] ) ? wp_unslash( $_POST['template'] ) : ''; switch ( $template ) { case 'group_members' : case 'groups/single/members' : $template_part = 'groups/single/members-loop.php'; break; case 'group_requests' : $template_part = 'groups/single/requests-loop.php'; break; case 'member_notifications' : $template_part = 'members/single/notifications/notifications-loop.php'; break; default : $template_part = $object . '/' . $object . '-loop.php'; break; } ob_start(); $template_path = bp_locate_template( array( $template_part ), false ); /** * Filters the server path for the template loader. * * @since BuddyPress 3.0.0 * * @param string Template file path. */ $template_path = apply_filters( 'bp_nouveau_object_template_path', $template_path ); load_template( $template_path ); $result['contents'] = ob_get_contents(); ob_end_clean(); if ( 'members' === $object ) { $result['count'] = $GLOBALS["members_template"]->total_member_count; } elseif ( 'groups' === $object ) { $result['count'] = $GLOBALS["groups_template"]->group_count; } elseif ( 'activity' === $object ) { //$result['count'] = $GLOBALS["activities_template"]->activity_count; } $result = apply_filters( 'bp_nouveau_object_template_result', $result, $object ); // Locate the object template. wp_send_json_success( $result ); }
Changelog
Version | Description |
---|---|
BuddyPress 3.0.0 | Introduced. |
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.