WordPress下实现跳过特定页面的自定义返回按钮方法咨询
利用WordPress钩子实现指定返回逻辑
完全可以通过步骤3的保存资料action来实现需求,核心思路是在用户保存资料时记录最初的来源页面(步骤1的directory页),再在步骤4的profile页面渲染返回链接时,根据记录决定跳转逻辑。
具体实现步骤
1. 追踪并保存原始来源页面
首先在用户进入profile页面(步骤2)时,判断是否来自directory页,若是则记录到session中;随后在保存资料的钩子触发时,把这个URL存入用户元数据:
// 追踪进入profile页的来源是否为directory add_action('template_redirect', 'track_original_directory_source'); function track_original_directory_source() { if (is_page('member/profile') && wp_get_referer() && str_contains(wp_get_referer(), 'directory')) { session_start(); $_SESSION['original_directory_url'] = wp_get_referer(); } } // 保存资料时,把来源URL存入用户元数据 add_action('um_profile_updated', 'save_original_source_for_back_link'); // 替换为实际可用的保存钩子 function save_original_source_for_back_link($user_id) { if (isset($_SESSION['original_directory_url'])) { update_user_meta($user_id, 'original_back_url', $_SESSION['original_directory_url']); unset($_SESSION['original_directory_url']); // 清除session避免重复记录 } }
2. 渲染带逻辑的返回链接
在主题或插件的对应位置渲染返回链接,根据用户元数据判断跳转逻辑:
$current_user = get_current_user_id(); $original_back_url = get_user_meta($current_user, 'original_back_url', true); ?> <a href="#" class="custom-back-link">返回</a> <script> document.querySelector('.custom-back-link').addEventListener('click', function(e) { e.preventDefault(); <?php if ($original_back_url) : ?> window.location.href = '<?php echo esc_url($original_back_url); ?>'; <?php delete_user_meta($current_user, 'original_back_url'); // 跳转后清除元数据 ?> <?php else : ?> history.go(-1); <?php endif; ?> }); </script> <?php
注意事项
- 请将示例中的
um_profile_updated替换为你实际可用的保存资料钩子,可通过插件文档或代码搜索工具确认钩子名称。 - 使用session是为了精准匹配“directory→profile→编辑→保存”的路径链,避免其他场景干扰。
- 跳转后清除用户元数据,防止后续进入profile页时错误跳转回directory。
内容的提问来源于stack exchange,提问作者LBF
相关产品推荐
相关产品推荐

