wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )
Redirects to another page.
Description Description
Note: wp_redirect() does not exit automatically, and should almost always be followed by a call to exit;:
wp_redirect( $url );
exit;
Exiting can also be selectively manipulated by using wp_redirect() as a conditional
in conjunction with the ‘wp_redirect’ and ‘wp_redirect_location’ filters:
if ( wp_redirect( $url ) ) {
exit;
}
Parameters Parameters
- $location
-
(string) (Required) The path or URL to redirect to.
- $status
-
(int) (Optional) HTTP response status code to use. Default '302' (Moved Temporarily).
Default value: 302
- $x_redirect_by
-
(string) (Optional) The application doing the redirect.
Default value: 'WordPress'
Return Return
(bool) False if the redirect was cancelled, true otherwise.
Source Source
File: wp-includes/pluggable.php
function wp_redirect( $location, $status = 302, $x_redirect_by = 'WordPress' ) {
global $is_IIS;
/**
* Filters the redirect location.
*
* @since 2.1.0
*
* @param string $location The path or URL to redirect to.
* @param int $status The HTTP response status code to use.
*/
$location = apply_filters( 'wp_redirect', $location, $status );
/**
* Filters the redirect HTTP response status code to use.
*
* @since 2.3.0
*
* @param int $status The HTTP response status code to use.
* @param string $location The path or URL to redirect to.
*/
$status = apply_filters( 'wp_redirect_status', $status, $location );
if ( ! $location ) {
return false;
}
$location = wp_sanitize_redirect( $location );
if ( ! $is_IIS && PHP_SAPI != 'cgi-fcgi' ) {
status_header( $status ); // This causes problems on IIS and some FastCGI setups
}
/**
* Filters the X-Redirect-By header.
*
* Allows applications to identify themselves when they're doing a redirect.
*
* @since 5.1.0
*
* @param string $x_redirect_by The application doing the redirect.
* @param int $status Status code to use.
* @param string $location The path to redirect to.
*/
$x_redirect_by = apply_filters( 'x_redirect_by', $x_redirect_by, $status, $location );
if ( is_string( $x_redirect_by ) ) {
header( "X-Redirect-By: $x_redirect_by" );
}
header( "Location: $location", true, $status );
return true;
}
Expand full source code Collapse full source code View on Trac
Changelog Changelog
| Version | Description |
|---|---|
| 5.1.0 | The $x_redirect_by parameter was added. |
| 1.5.1 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
wp_redirect()does not validate that the$locationis a reference to the current host. This means that this function is vulnerable to open redirects if you pass it a$locationsupplied by the user. For this reason, it is best practice to always usewp_safe_redirect()instead, since it will usewp_validate_redirect()to ensure that the$locationrefers to the current host. Only usewp_redirect()when you are specifically trying to redirect to another site, and then you can hard-code the URL.Examples
Redirects can also be external, and/or use a “Moved Permanently” code :
The code below redirects to the parent post URL which can be used to redirect attachment pages back to the parent.
template_redirect Action
function my_logged_in_redirect() { if ( is_user_logged_in() && is_page( 12 ) ) { wp_redirect( get_permalink( 32 ) ); die; } } add_action( 'template_redirect', 'my_logged_in_redirect' );