bp_get_canonical_url( array $args = array() )
Get the canonical URL of the current page.
Description
Parameters
- $args
-
(Optional) Optional array of arguments.
- 'include_query_args'
(bool) Whether to include current URL arguments in the canonical URL returned from the function.
Default value: array()
- 'include_query_args'
Return
(string) Canonical URL for the current page.
Source
File: bp-core/bp-core-catchuri.php
function bp_get_canonical_url( $args = array() ) { // For non-BP content, return the requested url, and let WP do the work. if ( bp_is_blog_page() ) { return bp_get_requested_url(); } $bp = buddypress(); $defaults = array( 'include_query_args' => false // Include URL arguments, eg ?foo=bar&foo2=bar2. ); $r = wp_parse_args( $args, $defaults ); extract( $r ); // Special case: when a BuddyPress directory (eg example.com/members) // is set to be the front page, ensure that the current canonical URL // is the home page URL. if ( 'page' == get_option( 'show_on_front' ) && $page_on_front = (int) get_option( 'page_on_front' ) ) { $front_page_component = array_search( $page_on_front, bp_core_get_directory_page_ids() ); /* * If requesting the front page component directory, canonical * URL is the front page. We detect whether we're detecting a * component *directory* by checking that bp_current_action() * is empty - ie, this not a single item, a feed, or an item * type directory. */ if ( false !== $front_page_component && bp_is_current_component( $front_page_component ) && ! bp_current_action() && ! bp_get_current_member_type() ) { $bp->canonical_stack['canonical_url'] = trailingslashit( bp_get_root_domain() ); // Except when the front page is set to the registration page // and the current user is logged in. In this case we send to // the members directory to avoid redirect loops. } elseif ( bp_is_register_page() && 'register' == $front_page_component && is_user_logged_in() ) { /** * Filters the logged in register page redirect URL. * * @since BuddyPress 1.5.1 * * @param string $value URL to redirect logged in members to. */ $bp->canonical_stack['canonical_url'] = apply_filters( 'bp_loggedin_register_page_redirect_to', bp_get_members_directory_permalink() ); } } if ( empty( $bp->canonical_stack['canonical_url'] ) ) { // Build the URL in the address bar. $requested_url = bp_get_requested_url(); // Stash query args. $url_stack = explode( '?', $requested_url ); // Build the canonical URL out of the redirect stack. if ( isset( $bp->canonical_stack['base_url'] ) ) $url_stack[0] = $bp->canonical_stack['base_url']; if ( isset( $bp->canonical_stack['component'] ) ) $url_stack[0] = trailingslashit( $url_stack[0] . $bp->canonical_stack['component'] ); if ( isset( $bp->canonical_stack['action'] ) ) $url_stack[0] = trailingslashit( $url_stack[0] . $bp->canonical_stack['action'] ); if ( !empty( $bp->canonical_stack['action_variables'] ) ) { foreach( (array) $bp->canonical_stack['action_variables'] as $av ) { $url_stack[0] = trailingslashit( $url_stack[0] . $av ); } } // Add trailing slash. $url_stack[0] = trailingslashit( $url_stack[0] ); // Stash in the $bp global. $bp->canonical_stack['canonical_url'] = implode( '?', $url_stack ); } $canonical_url = $bp->canonical_stack['canonical_url']; if ( !$include_query_args ) { $canonical_url = array_reverse( explode( '?', $canonical_url ) ); $canonical_url = array_pop( $canonical_url ); } /** * Filters the canonical url of the current page. * * @since BuddyPress 1.6.0 * * @param string $canonical_url Canonical URL of the current page. * @param array $args Array of arguments to help determine canonical URL. */ return apply_filters( 'bp_get_canonical_url', $canonical_url, $args ); }
Changelog
Version | Description |
---|---|
BuddyPress 1.6.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.