wp_get_referer()
云策文档标注
概述
wp_get_referer() 函数用于从 '_wp_http_referer' 查询变量或 HTTP referer 中检索来源 URL。如果来源 URL 与当前请求 URL 相同,则返回 false。
关键要点
- 函数返回字符串(成功时)或 false(失败时),失败情况包括来源 URL 与当前请求 URL 相同或 wp_validate_redirect() 未定义。
- HTTP referer 是服务器变量,注意 'referer' 是故意拼写错误的。
- 函数内部调用 wp_get_raw_referer() 获取未验证的来源,并通过 wp_validate_redirect() 进行验证。
- 相关函数包括 wp_get_raw_referer()、wp_validate_redirect()、wp_unslash() 和 home_url()。
- 在 WordPress 核心中广泛使用,例如在 WP_Recovery_Mode、WP_Customize_Manager 和多个管理功能中。
代码示例
if ( wp_get_referer() ) {
wp_safe_redirect( wp_get_referer() );
} else {
wp_safe_redirect( get_home_url() );
}
原文内容
Retrieves referer from ‘_wp_http_referer’ or HTTP referer.
Description
If it’s the same as the current request URL, will return false.
Source
function wp_get_referer() {
// Return early if called before wp_validate_redirect() is defined.
if ( ! function_exists( 'wp_validate_redirect' ) ) {
return false;
}
$ref = wp_get_raw_referer();
if ( $ref && wp_unslash( $_SERVER['REQUEST_URI'] ) !== $ref
&& home_url() . wp_unslash( $_SERVER['REQUEST_URI'] ) !== $ref
) {
return wp_validate_redirect( $ref, false );
}
return false;
}
Changelog
| Version | Description |
|---|---|
| 2.0.4 | Introduced. |
Skip to note 2 content
Codex
Example
if ( wp_get_referer() ) { wp_safe_redirect( wp_get_referer() ); } else { wp_safe_redirect( get_home_url() ); }