You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取非完整URL的来源页?WordPress来源判断代码改写遇阻

WordPress Referer相关问题解答

1. 如何获取不含完整URL的来源页(referer)?

可以借助PHP的parse_url()函数解析wp_get_referer()返回的完整URL,提取你需要的部分:

  • 提取路径部分(不含域名、协议和参数):
    $referer = wp_get_referer();
    if ($referer) {
        $referer_path = parse_url($referer, PHP_URL_PATH);
        // $referer_path 示例:/wp-admin/post.php
    }
    
  • 提取查询参数部分:
    $referer = wp_get_referer();
    if ($referer) {
        $referer_query = parse_url($referer, PHP_URL_QUERY);
        // $referer_query 示例:post=12800&action=edit
    }
    

如果仅需判断来源是否包含特定路径,也可以直接用strpos()匹配,无需完全解析URL。

2. 来源页判断失效的解决方法

你修改后的代码(wp_get_referer() == (admin_url()))失效的核心原因:admin_url()默认返回后台首页URL(比如https://你的域名/wp-admin/),但实际来源页是文章编辑页(https://你的域名/wp-admin/post.php?post=12800&action=edit),两者完全不相等,导致判断不成立。

根据不同需求,提供两种解决思路:

思路1:判断来源是后台任意页面

若只需验证来源为后台页面,用strpos()检查referer是否包含后台URL前缀:

(strpos(wp_get_referer(), admin_url()) !== false)

思路2:判断来源是任意文章编辑页

若需验证来源为文章编辑页(不限特定文章),可检查URL是否包含编辑页的特征路径与参数:

$referer = wp_get_referer();
if ($referer && strpos($referer, 'post.php?action=edit') !== false) {
    // 来源是文章编辑页
}

若需要更严谨的参数校验,可解析URL的查询参数:

$referer = wp_get_referer();
if ($referer) {
    $query_params = [];
    parse_str(parse_url($referer, PHP_URL_QUERY), $query_params);
    if (isset($query_params['action']) && $query_params['action'] === 'edit' && isset($query_params['post'])) {
        // 来源是合法的文章编辑页
    }
}

内容的提问来源于stack exchange,提问作者Ridwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:09:30