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

WordPress重定向后添加自定义内容的实现方法咨询

解决方案

方案一:通过URL查询参数传递状态

这是最直接的实现方式,重定向时给会员页URL附加一个自定义标记参数,再在会员页模板里判断该参数是否存在,以此显示专属提示。

步骤1:修改重定向函数

在你的重定向逻辑中,用add_query_arg()给会员页URL添加标记:

function redirect_non_logged_to_members() {
    // 判断当前是下载页且用户未登录
    if ( !is_user_logged_in() && is_page('download') ) {
        $members_page = get_page_by_path('members');
        if ( $members_page ) {
            $members_url = get_permalink($members_page);
            // 附加?from_download=1参数
            $redirect_url = add_query_arg( 'from_download', '1', $members_url );
            wp_redirect( $redirect_url );
            exit; // 必须加exit终止代码,确保重定向生效
        }
    }
}
add_action('template_redirect', 'redirect_non_logged_to_members');

步骤2:在会员页模板添加提示

找到会员页的模板文件(如page-members.php),在内容区域开头加入判断逻辑:

// 校验URL参数并输出提示
if ( isset($_GET['from_download']) && sanitize_text_field($_GET['from_download']) === '1' ) {
    echo '<div class="custom-alert">您尝试下载的产品无法单独购买,它属于我们的会员套餐内容</div>';
}

可以给这个提示框添加自定义CSS样式,提升视觉辨识度。


方案二:通过PHP会话存储状态(更隐蔽)

如果不想让URL暴露参数,可使用PHP会话标记用户的重定向来源,这种方式更隐蔽,不会被用户轻易篡改。

步骤1:修改重定向函数并开启会话

function redirect_non_logged_to_members() {
    if ( !is_user_logged_in() && is_page('download') ) {
        // 开启PHP会话(确保主机未禁用session)
        if ( !session_id() ) {
            session_start();
        }
        // 设置会话标记
        $_SESSION['from_download_redirect'] = true;

        $members_page = get_page_by_path('members');
        if ( $members_page ) {
            wp_redirect( get_permalink($members_page) );
            exit;
        }
    }
}
add_action('template_redirect', 'redirect_non_logged_to_members');

步骤2:在会员页读取会话并显示提示

通过钩子在会员页内容前插入提示,或直接写入模板:

function show_download_redirect_notice() {
    // 仅在会员页且用户未登录时执行
    if ( !is_user_logged_in() && is_page('members') ) {
        if ( session_id() && isset($_SESSION['from_download_redirect']) ) {
            echo '<div class="custom-alert">您尝试下载的产品无法单独购买,它属于我们的会员套餐内容</div>';
            // 清除标记,避免刷新页面重复显示
            unset($_SESSION['from_download_redirect']);
        }
    }
}
add_action('the_content', 'show_download_redirect_notice', 10);

注意事项

  • wp_redirect()之后必须加exit;,否则WordPress后续代码会继续执行,可能导致重定向失效。
  • 方案一中的参数可自定义(比如换成access_denied=download),只要前后逻辑对应即可。
  • 若使用方案二,需确认主机环境允许PHP会话,部分主机可能禁用session,这种情况下方案一更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:20:27