php - 我在functions.php文件中添加了将用户从WP登录页面转移到Woocomerce登录页面的代码,但现在登录后出现空白屏幕
问题描述
我正在使用 OceanWP 主题和 WP-job-manager 和 woocommerce 插件构建一个 WordPress 网站。
由于许多 WP-job-manager 链接将用户转移到默认的 Wordpress 登录页面,我希望所有用户都使用 woocommerce 登录页面登录,因此我将以下代码添加到我的 functions.php 文件中:
/**
* direct users to woocommerce login page
*/
add_filter( 'login_url', 'my_login_page', 10, 2 );
function my_login_page( $login_url, $redirect ) {
return home_url( '/my-account/?redirect_to=' . $redirect );
}
/** Log in redirect to previous page by logicdigger **/
// start global session for saving the referer url
function start_session() {
if(!session_id()) {
session_start();
}
}
add_action('init', 'start_session', 1);
// get the referer url and save it to the session
function redirect_url() {
if (! is_user_logged_in()) {
$_SESSION['referer_url'] = wp_get_referer();
} else {
session_destroy();
}
}
add_action( 'template_redirect', 'redirect_url' );
//login redirect to referer url
function login_redirect() {
if (isset($_SESSION['referer_url'])) {
wp_redirect($_SESSION['referer_url']);
} else {
wp_redirect(home_url());
}
}
add_filter('woocommerce_login_redirect', 'login_redirect', 1100, 2);
它似乎运作良好,并将所有用户转移到 woocommerce 登录页面,但我遇到的问题是,当用户使用 woocommerce 登录页面登录时,即使 URL 是“www.mywebsite.com/”,他们也会得到一个空白屏幕我的帐户”,这是我的帐户页面的正确 URL。
...但是当我刷新页面时,页面会重定向到用户之前所在的页面,这就是我希望它的工作方式。
我只是想知道登录后可能导致空白屏幕的原因是什么?
我已清除缓存并重试,但同样的事情发生了。我真的不知道是什么原因造成的。
提前谢谢了。
解决方案
...但是当我刷新页面时,页面会重定向到用户之前所在的页面,这就是我希望它的工作方式。
我测试了你的片段,我得到了同样的结果。
问题:一旦您使用了 WooCommerce 登录表单,为什么还要使用其余功能来处理会话?我认为 WooCommerce 会为您做到这一点,所以我正在考虑使用:
/**
* direct users to woocommerce login page
*/
add_filter( 'login_url', 'my_login_page', 10, 2 );
function my_login_page( $login_url, $redirect ) {
return home_url( '/my-account/?redirect_to=' . $redirect );
}
应该足够了,不(?)。
推荐阅读
- java - 解析 XML 时出错:未绑定前缀(android 清单)
- python - 使用for循环在python中添加两个数组
- python - Python pandas沿两个条件变量添加序列
- java - DataProvider 不允许返回 String 2D 数组
- pyspark - 无法将 pyspark 中的数据框复制到 Databricks 中的 csv 文件
- dataweave - 在 Mule 4 中读取 YAML 文件
- android - cordova-plugin-shake 适用于 Android,但不适用于 iOS
- forms - 提交表单后重置 Google 表格
- c++ - OpenCL 内核无法在发布模式下工作/打印?
- firebird - 如何通过flarerobin创建PSQL存储函数