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

如何为WordPress前台URL添加refpin参数并排除静态资源

解决WordPress中refpin参数被添加到CSS/JS等静态资源URL的问题

原代码的问题在于template_redirect钩子会在所有WordPress请求(包括静态资源、后台页面、API请求)中触发,导致CSS、JS这类静态资源的URL被附加refpin参数,进而引发加载异常。我们需要添加条件判断,仅在前台用户访问的页面中执行参数添加逻辑。

修改后的代码

function wprdcv_param_redirect(){
    // 仅在前台非特殊请求中执行
    if (is_user_logged_in() && !is_admin() && !wp_doing_ajax() && !is_feed() && !is_robots() && !is_trackback()) {
        $referalpin = $_GET['refpin'];
        if (!$referalpin) {
            // 排除静态资源请求(CSS/JS/图片等)
            $current_uri = $_SERVER['REQUEST_URI'];
            $static_extensions = array('.css', '.js', '.jpg', '.jpeg', '.png', '.gif', '.ico', '.svg');
            $is_static_resource = false;
            foreach ($static_extensions as $ext) {
                if (strpos($current_uri, $ext) !== false) {
                    $is_static_resource = true;
                    break;
                }
            }
            if (!$is_static_resource) {
                $ioppin = bp_get_profile_field_data('field=211&user_id=' . bp_loggedin_user_id());
                $location = add_query_arg(array('refpin' => $ioppin));
                wp_redirect($location);
                exit; // 重定向后必须退出,避免后续代码执行
            }
        }
    }
}
add_action('template_redirect', 'wprdcv_param_redirect');

关键修改说明

  1. 添加多条件过滤:
    • !is_admin():排除WordPress后台页面的请求
    • !wp_doing_ajax():排除AJAX异步请求
    • !is_feed() && !is_robots() && !is_trackback():排除订阅源、robots.txt、引用通知等特殊页面请求
  2. 静态资源判断:通过检查请求URI的后缀,排除CSS、JS、图片等静态资源,避免参数被附加到这些资源URL上
  3. 添加exit语句:重定向后必须调用exit,防止WordPress继续执行后续代码,确保重定向生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:45:04